void generateSportFasCurrentPacket(uint8_t * packet, uint32_t current) { packet[0] = 0x22; //DATA_ID_FAS packet[1] = 0x10; //DATA_FRAME *((uint16_t *)(packet+2)) = 0x0200; //CURR_FIRST_ID *((int32_t *)(packet+4)) = current; setSportPacketCrc(packet); }
void generateSportFasVoltagePacket(uint8_t * packet, uint32_t voltage) { packet[0] = 0x22; //DATA_ID_FAS packet[1] = 0x10; //DATA_FRAME *((uint16_t *)(packet+2)) = 0x0210; //VFAS_FIRST_ID *((int32_t *)(packet+4)) = voltage; // unit 10mV setSportPacketCrc(packet); }
void generateSportCellPacket(uint8_t * packet, uint8_t cells, uint8_t battnumber, uint16_t cell1, uint16_t cell2, uint8_t sensorId=DATA_ID_FLVSS) { packet[0] = sensorId; packet[1] = 0x10; //DATA_FRAME *((uint16_t *)(packet+2)) = 0x0300; //CELLS_FIRST_ID uint32_t data = 0; data += (cells << 4) + battnumber; data += ((cell1 * 5) & 0xFFF) << 8; data += ((cell2 * 5) & 0xFFF) << 20; *((int32_t *)(packet+4)) = data; setSportPacketCrc(packet); }
bool generateSportPacket(uint8_t * packet, uint8_t dataId, uint8_t prim, uint16_t appId, uint32_t data) { if (dataId > 0x1B ) return false; // generate Data ID field uint8_t bit5 = getBit(0, dataId) ^ getBit(1, dataId) ^ getBit(2, dataId); uint8_t bit6 = getBit(2, dataId) ^ getBit(3, dataId) ^ getBit(4, dataId); uint8_t bit7 = getBit(0, dataId) ^ getBit(2, dataId) ^ getBit(4, dataId); packet[0] = (bit7 << 7) + (bit6 << 6) + (bit5 << 5) + dataId; // qDebug("dataID: 0x%02x (%d)", packet[0], dataId); packet[1] = prim; *((uint16_t *)(packet+2)) = appId; *((int32_t *)(packet+4)) = data; setSportPacketCrc(packet); return true; }
void generateSportCellPacket(uint8_t * packet, uint8_t cells, uint8_t battnumber, uint16_t cell1, uint16_t cell2) { if (battnumber < 6) { packet[0] = 0xA1; //DATA_ID_FLVSS; } else { packet[0] = 0xA1+1; //DATA_ID_FLVSS+1; battnumber -= 6; } packet[1] = 0x10; //DATA_FRAME *((uint16_t *)(packet+2)) = 0x0300; //CELLS_FIRST_ID uint32_t data = 0; data += (cells << 4) + battnumber; data += ((cell1 * 5) & 0xFFF) << 8; data += ((cell2 * 5) & 0xFFF) << 20; *((int32_t *)(packet+4)) = data; setSportPacketCrc(packet); }