start refactoring transmitting

This commit is contained in:
Wolfgang Hottgenroth 2020-11-25 11:56:09 +01:00
parent 3e31693cf8
commit d86f767dc3
Signed by: wn
GPG Key ID: 6C1E5E531E0D5D7F

View File

@ -193,9 +193,9 @@ static void parseAndPrintFrame() {
for (uint8_t j = 0; j < MBUSDEVICE_NUM_OF_CONSIDEREDFIELDS; j++) { for (uint8_t j = 0; j < MBUSDEVICE_NUM_OF_CONSIDEREDFIELDS; j++) {
if (mbusCommHandle.device->consideredField[j] == i) { if (mbusCommHandle.device->consideredField[j] == i) {
parsedVIB_t parsedVIB = parseVIB(record->drh.vib); parsedVIB_t parsedVIB = parseVIB(record->drh.vib);
coloredMsg(LOG_YELLOW, false, "mbc papf [%d] parsed VIB N: %s, U: %s, E: %d", // coloredMsg(LOG_YELLOW, false, "mbc papf [%d] parsed VIB N: %s, U: %s, E: %d",
mbusCommHandle.requestId, // mbusCommHandle.requestId,
parsedVIB.name, parsedVIB.unit, parsedVIB.exponent); // parsedVIB.name, parsedVIB.unit, parsedVIB.exponent);
if (parsedVIB.found) { if (parsedVIB.found) {
uint32_t value = strtol(mbus_data_record_value(record), NULL, 10); uint32_t value = strtol(mbus_data_record_value(record), NULL, 10);
float weightedValue = ((float) value) * powf(10.0, ((float) parsedVIB.exponent)); float weightedValue = ((float) value) * powf(10.0, ((float) parsedVIB.exponent));
@ -306,7 +306,7 @@ void mbusCommExec() {
uint8_t receivedOctet = 0; uint8_t receivedOctet = 0;
if ((mbusCommHandle.startTime != 0) && ((mbusCommHandle.startTime + 2500) < HAL_GetTick())) { if ((mbusCommHandle.startTime != 0) && ((mbusCommHandle.startTime + 2500) < HAL_GetTick())) {
coloredMsg(LOG_RED, false, "TIMEOUT!! %d %ld %ld", mbusCommHandle.state, mbusCommHandle.startTime, HAL_GetTick()); coloredMsg(LOG_RED, false, "TIMEOUT %d %ld %ld", mbusCommHandle.state, mbusCommHandle.startTime, HAL_GetTick());
mbusCommHandle.startTime = 0; mbusCommHandle.startTime = 0;
mbusCommHandle.state = MBCS_TIMEOUT; mbusCommHandle.state = MBCS_TIMEOUT;
} else if (mbusCommHandle.waitForOctet) { } else if (mbusCommHandle.waitForOctet) {
@ -324,7 +324,7 @@ void mbusCommExec() {
break; break;
case MBCS_SEND: case MBCS_SEND:
coloredMsg(LOG_YELLOW, false, "mbc hre [%d] state SEND", mbusCommHandle.requestId); // coloredMsg(LOG_YELLOW, false, "mbc hre [%d] state SEND", mbusCommHandle.requestId);
mbusCommHandle.sendBuffer.buffer[0] = 0x10; mbusCommHandle.sendBuffer.buffer[0] = 0x10;
mbusCommHandle.sendBuffer.buffer[1] = mbusCommHandle.cmd; mbusCommHandle.sendBuffer.buffer[1] = mbusCommHandle.cmd;
mbusCommHandle.sendBuffer.buffer[2] = mbusCommHandle.addr; mbusCommHandle.sendBuffer.buffer[2] = mbusCommHandle.addr;
@ -336,39 +336,32 @@ void mbusCommExec() {
// no break !! // no break !!
case MBCS_SEND_CONTINUED: case MBCS_SEND_CONTINUED:
coloredMsg(LOG_YELLOW, false, "mbc hre [%d] state SEND_CONTINUED", mbusCommHandle.requestId); // coloredMsg(LOG_YELLOW, false, "mbc hre [%d] state SEND_CONTINUED", mbusCommHandle.requestId);
show(LED_RED, OFF); show(LED_RED, OFF);
if (! loopActive) { if (! loopActive) {
coloredMsg(LOG_YELLOW, true, "mbc hre [%d] enabling loop, try %d", mbusCommHandle.requestId, mbusCommHandle.retryCnt); coloredMsg(LOG_YELLOW, true, "mbc hre [%d] enabling loop, try %d", mbusCommHandle.requestId, mbusCommHandle.retryCnt);
mbusCommHandle.retryCnt++; mbusCommHandle.retryCnt++;
loopEnable(); loopEnable();
// FIXME somehow manage to delay for about 100ms
} else { } else {
mbusCommHandle.retryCnt = 0; mbusCommHandle.retryCnt = 0;
// FIXME sending possibly needs to be done in a different way
// HAL_UART_Transmit(&mbusUart, mbusCommHandle.sendBuffer.buffer, 5, HAL_MAX_DELAY);
// enable transmitter interrupt // enable transmitter interrupt
coloredMsg(LOG_YELLOW, false, "mbc hre [%d] enable transmitter interrupt", mbusCommHandle.requestId); //coloredMsg(LOG_YELLOW, false, "mbc hre [%d] enable transmitter interrupt", mbusCommHandle.requestId);
__HAL_UART_ENABLE_IT(&mbusUart, UART_IT_TXE); __HAL_UART_ENABLE_IT(&mbusUart, UART_IT_TXE);
// transition from here to SENDING_DONE is initiate by mbusCommTxCpltCallback
// interrupt callback
mbusCommHandle.state = MBCS_SENDING; mbusCommHandle.state = MBCS_SENDING;
} }
break; break;
case MBCS_SENDING: case MBCS_SENDING:
// transition from here to MBCS_SENDING_DONE is done by TX ISR
break; break;
case MBCS_SENDING_DONE: case MBCS_SENDING_DONE:
coloredMsg(LOG_YELLOW, false, "mbc hre [%d] state SENDING_DONE", mbusCommHandle.requestId); //coloredMsg(LOG_YELLOW, false, "mbc hre [%d] state SENDING_DONE", mbusCommHandle.requestId);
mbusCommHandle.state = MBCS_ENABLE_FRONTEND; mbusCommHandle.state = MBCS_ENABLE_FRONTEND;
// FIXME somehow manage to delay for about 3ms
break; break;
case MBCS_ENABLE_FRONTEND: case MBCS_ENABLE_FRONTEND:
coloredMsg(LOG_YELLOW, false, "mbc hre [%d] state ENABLE_FRONTEND", mbusCommHandle.requestId); // coloredMsg(LOG_YELLOW, false, "mbc hre [%d] state ENABLE_FRONTEND", mbusCommHandle.requestId);
frontendEnable(); frontendEnable();
calculatedChksum = 0; calculatedChksum = 0;
userdataIdx = 0; userdataIdx = 0;