// send API Transmit Request frameID to address - API data is in *data
void APItransmitRequest(int frameID, long int addressMSB, long int addressLSB, const unsigned char *data, int length)
{
int i;
printf("API Transmit Request RAM frame %0x length %d bytes to address %0lx%0lx :\n ", frameID, length, addressMSB, addressLSB);
APIdataindex=0; // initialise API data index to 0
APIdata[APIdataindex++]=0x10; // XBee transmit request
APIdata[APIdataindex++]=frameID; // frame ID
APIdata[APIdataindex++]=(addressMSB>>24) & 0xFF; // address MSB
APIdata[APIdataindex++]=(addressMSB>>16) & 0xFF;
APIdata[APIdataindex++]=(addressMSB>>8) & 0xFF;
APIdata[APIdataindex++]=(addressMSB) & 0xFF;
APIdata[APIdataindex++]=(addressLSB>>24) & 0xFF; // address LSB
APIdata[APIdataindex++]=(addressLSB>>16) & 0xFF;
APIdata[APIdataindex++]=(addressLSB>>8) & 0xFF;
APIdata[APIdataindex++]=(addressLSB) & 0xFF;
APIdata[APIdataindex++]=0xFF; // broadcast network address
APIdata[APIdataindex++]=0xFE;
APIdata[APIdataindex++]=0x00; // hops byte
APIdata[APIdataindex++]=0x00; // options byte
for(i=0; i<72 && i<length; i++) // data to transmit
{
APIdata[APIdataindex++]=data[i];
if(APIdataindex>98)
{ printf("\n\n ********* In APItransmitRequest() APIdataindex[] overflow ********* \n\n"); break; }
}
APIdata[APIdataindex++]=0x0; // ???
APIcommand(APIdataindex, APIdata); // send APIdata length APIdataindex
XBeeLCDstatusROM( "Node xmit data");
}