Skip to content

Commit

Permalink
RN8209 call and response
Browse files Browse the repository at this point in the history
  • Loading branch information
openshwprojects committed Nov 30, 2023
1 parent 3ee03be commit c687236
Showing 1 changed file with 25 additions and 75 deletions.
100 changes: 25 additions & 75 deletions src/driver/drv_rn8209.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,67 +8,6 @@
#define BL0942_UART_PACKET_LEN 12
#define BL0942_UART_PACKET_HEAD 12

static int UART_TryToGetNextPacket(void) {
int cs;
int i;
int c_garbage_consumed = 0;
byte checksum;

do {
cs = UART_GetDataSize();
if (cs == 0)
break;
i = UART_GetByte(0);

ADDLOG_WARN(LOG_FEATURE_ENERGYMETER,
"UA %i\n",
i);
UART_ConsumeBytes(1);
} while (cs > 0);


//if(cs < BL0942_UART_PACKET_LEN) {
// return 0;
//}
//// skip garbage data (should not happen)
//while(cs > 0) {
// if (UART_GetByte(0) != BL0942_UART_PACKET_HEAD) {
// UART_ConsumeBytes(1);
// c_garbage_consumed++;
// cs--;
// } else {
// break;
// }
//}
//if(c_garbage_consumed > 0){
// ADDLOG_WARN(LOG_FEATURE_ENERGYMETER,
// "Consumed %i unwanted non-header byte in BL0942 buffer\n",
// c_garbage_consumed);
//}
//if(cs < BL0942_UART_PACKET_LEN) {
// return 0;
//}
// if (UART_GetByte(0) != 0x55)
// return 0;
// checksum = BL0942_UART_CMD_READ(BL0942_UART_ADDR);

// for(i = 0; i < BL0942_UART_PACKET_LEN-1; i++) {
// checksum += UART_GetByte(i);
//}
//checksum ^= 0xFF;

// if (checksum != UART_GetByte(BL0942_UART_PACKET_LEN - 1)) {
// ADDLOG_WARN(LOG_FEATURE_ENERGYMETER,
// "Skipping packet with bad checksum %02X wanted %02X\n",
// UART_GetByte(BL0942_UART_PACKET_LEN - 1), checksum);
// UART_ConsumeBytes(BL0942_UART_PACKET_LEN);
// return 1;
//}


// UART_ConsumeBytes(BL0942_UART_PACKET_LEN);
return 0;
}

static void UART_WriteReg(byte reg, byte *data, int len) {
byte crc;
Expand All @@ -89,32 +28,35 @@ static void UART_WriteReg(byte reg, byte *data, int len) {
static void UART_ReadReg(byte reg) {
byte crc;
byte data[32];
int size;
int size, i;

UART_SendByte(reg);

rtos_delay_milliseconds(10);
rtos_delay_milliseconds(30);

data[0] = reg;
size = 1;
/*
crc = reg;
while(UART_GetDataSize()) {
data[size] = UART_GetByte(0);
size++;
ADDLOG_WARN(LOG_FEATURE_ENERGYMETER,
"UA %i\n",
(int)data[size]);
size++;
UART_ConsumeBytes(1);
} while (cs > 0);*/
/*crc = reg;
for (int i = 0; i < len; i++) {
UART_SendByte(data[i]);
}
for (i = 1; i < size - 1; i++) {
crc += data[i];
}
crc = ~crc;
UART_SendByte(crc);*/
if (crc == data[size - 1]) {
ADDLOG_WARN(LOG_FEATURE_ENERGYMETER,
"CRC OK\n");
}
else {
ADDLOG_WARN(LOG_FEATURE_ENERGYMETER,
"CRC BAD, expected %i, got %i\n",(int)crc,(int)data[size - 1]);
}
}
// startDriver RN8209
void RN8209_Init(void) {
Expand All @@ -124,9 +66,7 @@ void RN8209_Init(void) {
}

void RN8029_RunEverySecond(void) {
UART_TryToGetNextPacket();

UART_ReadReg(0x24,0,0);
UART_ReadReg(0x24);

}
/*
Expand All @@ -142,4 +82,14 @@ Let's verify checksum (sum modulo 256 and negated):
(36+32+51+225)%256=88
88 -> 01011000
167 -> 10100111
Send: 36 (command code)
Warn:EnergyMeter:UA 32
Warn:EnergyMeter:UA 38
Warn:EnergyMeter:UA 227
Warn:EnergyMeter:UA 178
Let's verify checksum (sum modulo 256 and negated):
(36+32+38+227)%256=77
77 -> 01001101
178 -> 10110010
*/

0 comments on commit c687236

Please sign in to comment.