Files

25 lines
1.1 KiB
C

#define _POSIX_C_SOURCE 200809L
#include "atom_mb.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
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;
}