#define _POSIX_C_SOURCE 200809L #include "atom_mb.h" #include #include #include static uint64_t now(void) { struct timespec t; clock_gettime(CLOCK_MONOTONIC,&t); return (uint64_t)t.tv_sec*1000+(uint64_t)t.tv_nsec/1000000; } int main(int argc,char **argv) { am_client c; uint64_t start=now(); unsigned successes=0,errors=0; int uncertain=0,last=0; struct timespec pause={0,1000000}; uint16_t values[2]={42,43}; if(argc!=4 || !am_init(&c,"127.0.0.1",(uint16_t)atoi(argv[1]))) return 2; c.retry_delay_ms=20; c.response_timeout_ms=80; c.connect_timeout_ms=100; am_enable(&c,1,start); while(now()-start<1500 && successes<(unsigned)atoi(argv[3])) { uint64_t t=now(); am_tick(&c,t); if(c.done) { successes++; c.done=0; } if(c.error) { errors++; last=c.result; uncertain|=c.write_uncertain; c.error=0; } if(c.state==AM_READY && successes<(unsigned)atoi(argv[3])) { int f=atoi(argv[2]); am_request(&c,1,(uint8_t)f,0,2,values,t); } nanosleep(&pause,0); } printf("%u %u %u %d %d %u %u\n",successes,errors,c.reconnects,uncertain,last,c.data[0],c.data[1]); am_close(&c); return successes==(unsigned)atoi(argv[3])?0:1; }