#include "modbus_data.h" #include #include int main(void) { uint16_t bank[4]={0xa5a5,0x5a5a,0x1234,0xbeef}, original[4], data[130], out; unsigned offset, quantity, bit; assert(mb_data_transfer(3,4,0,bank,0,data,130,&out)==0 && out==8 && data[3]==0xbeef); assert(mb_data_transfer(16,4,7,bank,0,data,130,&out)==3); assert(mb_data_validate(1,0,0,130)==3); assert(mb_data_validate(3,126,0,130)==3); assert(mb_data_validate(16,124,248,130)==3); assert(mb_data_validate(15,17,3,1)==3); assert(mb_data_validate(5,1,0,0)==3); assert(mb_data_validate(2,1,0,130)==1); for(offset=0;offset<16;++offset) for(quantity=1;quantity<=32;++quantity) { bank[0]=0xa5a5; bank[1]=0x5a5a; bank[2]=0x1234; bank[3]=0xbeef; memcpy(original,bank,sizeof(bank)); memset(data,0xcc,sizeof(data)); assert(mb_data_transfer(1,(uint16_t)quantity,0,bank,(uint16_t)offset,data,130,&out)==0); for(bit=0;bit>((bit%16)^8))&1)==((bank[(bit+offset)/16]>>((bit+offset)%16))&1)); for(bit=0;bit