//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// Convert data to byte-stream for sending to device and calculate CRC. /// /// @param buf [out] buffer (large enough for storing all data) /// /// \return number of bytes converted /// int DevLXNano::Class::ToStream(void* buf) { byte* dst = (byte*) buf; LX_ADD_TO_STREAM(name); crc = DevLXNano::CalcCrc(dst - (byte*) buf, buf); LX_ADD_TO_STREAM(crc); return(dst - (byte*) buf); } // ToStream()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// Convert data to byte-stream for sending to device and calculate CRC. /// /// @param buf [out] buffer (large enough for storing all data) /// /// \return number of bytes converted /// int DevLXNano::Class::ToStream(void* buf) { byte* dst = (byte*) buf; LX_ADD_TO_STREAM(name); crc = DevLXNano::CalcCrc(dst - (byte*) buf, buf); LX_ADD_TO_STREAM(crc); #ifdef TESTBENCH StartupStore(_T("... LXNANO DECL CRC=%d%s"),crc,NEWLINE); #endif return(dst - (byte*) buf); } // ToStream()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// Convert data to byte-stream for sending to device and calculate CRC. /// /// @param buf [out] buffer (large enough for storing all data) /// /// \return number of bytes converted /// int DevLXNano::Decl::ToStream(void* buf) { uint32_t tmp; uint16_t tmpU16; int16_t tmpI16; byte*dst = (byte*) buf; LX_ADD_TO_STREAM(flight.flag); tmpU16 = PlatfEndian::To16BE(flight.oo_id); LX_ADD_TO_STREAM(tmpU16); LX_ADD_TO_STREAM(flight.pilot); LX_ADD_TO_STREAM(flight.glider); LX_ADD_TO_STREAM(flight.reg_num); LX_ADD_TO_STREAM(flight.cmp_num); LX_ADD_TO_STREAM(flight.cmp_cls); LX_ADD_TO_STREAM(flight.observer); LX_ADD_TO_STREAM(flight.gpsdatum); LX_ADD_TO_STREAM(flight.fix_accuracy); LX_ADD_TO_STREAM(flight.gps); LX_ADD_TO_STREAM(task.flag); tmp = PlatfEndian::To32BE(task.input_time); LX_ADD_TO_STREAM(tmp); LX_ADD_TO_STREAM(task.di); LX_ADD_TO_STREAM(task.mi); LX_ADD_TO_STREAM(task.yi); LX_ADD_TO_STREAM(task.fd); LX_ADD_TO_STREAM(task.fm); LX_ADD_TO_STREAM(task.fy); tmpI16 = PlatfEndian::To16BE(task.taskid); LX_ADD_TO_STREAM(tmpI16); LX_ADD_TO_STREAM(task.num_of_tp); for (int i = 0; i < max_wp_count; i++) LX_ADD_TO_STREAM(task.tpt[i]); for (int i = 0; i < max_wp_count; i++) { tmp = PlatfEndian::To32BE(task.lon[i]); LX_ADD_TO_STREAM(tmp); } for (int i = 0; i < max_wp_count; i++) { tmp = PlatfEndian::To32BE(task.lat[i]); LX_ADD_TO_STREAM(tmp); } for (int i = 0; i < max_wp_count; i++) LX_ADD_TO_STREAM(task.name[i]); crc = DevLXNano::CalcCrc(dst - (byte*) buf, buf); LX_ADD_TO_STREAM(crc); #ifdef TESTBENCH StartupStore(_T("... LXNANO DECL CRC=%d SIZE=%d" NEWLINE),crc,(unsigned)(dst-(byte*)buf)); #endif return(dst - (byte*) buf); } // ToStream()
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /// Convert data to byte-stream for sending to device and calculate CRC. /// /// @param buf [out] buffer (large enough for storing all data) /// /// \return number of bytes converted /// int DevLXNano::Decl::ToStream(void* buf) { uint32_t tmp; uint16_t tmpU16; int16_t tmpI16; byte*dst = (byte*) buf; LX_ADD_TO_STREAM(flight.flag); tmpU16 = PlatfEndian::To16BE(flight.oo_id); LX_ADD_TO_STREAM(tmpU16); LX_ADD_TO_STREAM(flight.pilot); LX_ADD_TO_STREAM(flight.glider); LX_ADD_TO_STREAM(flight.reg_num); LX_ADD_TO_STREAM(flight.cmp_num); LX_ADD_TO_STREAM(flight.cmp_cls); LX_ADD_TO_STREAM(flight.observer); LX_ADD_TO_STREAM(flight.gpsdatum); LX_ADD_TO_STREAM(flight.fix_accuracy); LX_ADD_TO_STREAM(flight.gps); LX_ADD_TO_STREAM(task.flag); tmp = PlatfEndian::To32BE(task.input_time); LX_ADD_TO_STREAM(tmp); LX_ADD_TO_STREAM(task.di); LX_ADD_TO_STREAM(task.mi); LX_ADD_TO_STREAM(task.yi); LX_ADD_TO_STREAM(task.fd); LX_ADD_TO_STREAM(task.fm); LX_ADD_TO_STREAM(task.fy); tmpI16 = PlatfEndian::To16BE(task.taskid); LX_ADD_TO_STREAM(tmpI16); LX_ADD_TO_STREAM(task.num_of_tp); for (int i = 0; i < max_wp_count; i++) LX_ADD_TO_STREAM(task.tpt[i]); for (int i = 0; i < max_wp_count; i++) { tmp = PlatfEndian::To32BE(task.lon[i]); LX_ADD_TO_STREAM(tmp); } for (int i = 0; i < max_wp_count; i++) { tmp = PlatfEndian::To32BE(task.lat[i]); LX_ADD_TO_STREAM(tmp); } for (int i = 0; i < max_wp_count; i++) LX_ADD_TO_STREAM(task.name[i]); crc = DevLXNano::CalcCrc(dst - (byte*) buf, buf); LX_ADD_TO_STREAM(crc); return(dst - (byte*) buf); } // ToStream()