#include "protocol.h" #include #include #include static unsigned frames[3]; static ld_reading latest; static uint16_t progress; static void got(ld_frame_kind kind,const uint8_t *data,size_t size,void *ctx) { (void)ctx; frames[kind]++; ld_reading r; if(ld_decode_reading(kind,data,size,&r)) latest=r; uint16_t p; if(ld_decode_progress(kind,data,size,&p)) progress=p; } int main(void) { uint8_t out[140],payload[96]={0}; assert(ld_command(0xff,(uint8_t[]){1,0},2,out,sizeof(out))==14); assert(!memcmp(out,(uint8_t[]){0xfd,0xfc,0xfb,0xfa,4,0,0xff,0,1,0,4,3,2,1},14)); assert(ld_command(0x72,payload,96,out,sizeof(out))==108); assert(ld_command(0x72,payload,96,out,100)==0); uint8_t standard[80]={0xf4,0xf3,0xf2,0xf1,70,0,1,3,150,0,0,0}; for(unsigned i=0;i<16;i++) ld_put32(standard+12+i*4,i+10); memcpy(standard+76,(uint8_t[]){0xf8,0xf7,0xf6,0xf5},4); const uint8_t minimal[]={0x6e,0,80,0,0x62}; for(unsigned split=1;split<90;split++) { ld_parser p={0}; memset(frames,0,sizeof(frames)); ld_feed(&p,(uint8_t *)"noise",5,got,NULL); ld_feed(&p,minimal,5,got,NULL); assert(latest.state==0 && latest.distance_cm==80); for(size_t i=0;i<80;i+=split) ld_feed(&p,standard+i,80-i