RBAPI(bool) com_ServoTRX(int com, unsigned char* cmd, int csize, unsigned char* buf, int bsize) { com_ClearRFIFO(com); if (com_Send(com, cmd, csize) == false) return false; if (COM_duplex[com] == COM_HDUPLEX) // discard the first-received csize bytes in case of TX/RX-short { int i; unsigned int tmpbyte; for (i=0; i<csize; i++) { if ((tmpbyte = com_Read(com)) == 0xffff) return false; if ((unsigned char)tmpbyte != cmd[i]) { err_SetMsg(ERROR_COM_FAIL, "receive a wrong self-feedback byte"); return false; } } } // end if (COM_duplex[com] ... if (buf != NULL) //&& if (com_Receive(com, buf, bsize) == false) return false; return true; }
int writeFloat(double val) { char str[32]; sprintf(str, "%.2f", val); return com_Send(Serial, (unsigned char*)str, strlen(str)); }
int writeLong(long val) { char str[32]; sprintf(str, "%ld", val); return com_Send(Serial, (unsigned char*)str, strlen(str)); }
RBAPI(bool) com_Write(int com, unsigned char val) { #if defined(RB_MSVC_WIN32) || defined(RB_MSVC_WINCE) || defined(RB_LINUX) return com_Send(com, &val, 1); #else // TODO ... err_SetMsg(ERROR_COM_INVALID, "unsupported platform"); return false; #endif }
_RBAPI_C(bool) com_printf(int com, char* fmt, ...) { char buf[512]; va_list args; va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); return com_Send(com, (unsigned char*)buf, (int)strlen(buf)); }
int writeString(const char *str) { return com_Send(Serial, (unsigned char*)str, strlen(str)); }