uint8_t ESP_SendATCommand(uint8_t *cmd, uint8_t *rxBuf, size_t rxBufSize, uint8_t *expectedTailStr) { uint16_t snt; if (AS2_SendBlock(cmd, (uint16_t)UTIL1_strlen((char*)cmd), &snt) != ERR_OK) { return ERR_FAILED; } return RxResponse(rxBuf, rxBufSize, ESP_TIMOUT_MS, expectedTailStr); }
uint8_t ESP_SendATCommand(uint8_t *cmd, uint8_t *rxBuf, size_t rxBufSize, uint8_t *expectedTailStr, uint16_t msTimeout, const CLS1_StdIOType *io) { uint16_t snt; uint8_t res; if (rxBuf!=NULL) { rxBuf[0] = '\0'; } if (io!=NULL) { CLS1_SendStr("sending>>:\r\n", io->stdOut); CLS1_SendStr(cmd, io->stdOut); } if (AS2_SendBlock(cmd, (uint16_t)UTIL1_strlen((char*)cmd), &snt) != ERR_OK) { return ERR_FAILED; } if (rxBuf!=NULL) { res = RxResponse(rxBuf, rxBufSize, expectedTailStr, msTimeout); if (io!=NULL) { CLS1_SendStr("received<<:\r\n", io->stdOut); CLS1_SendStr(rxBuf, io->stdOut); } } return res; }
void HTU21_TASK(void) { static uint8_t state = TRIGGER_HUM ; static uint8_t retry_times = 0 ; int16_t dst_buffer; uint16_t src_buffer; uint16_t humidity_buf ; int16_t temperature_buf = 0 ; char str[20] ; switch(state) { case TRIGGER_HUM: if(htu21d_trigger_measurement_no_hold_master(SELECT_HUM)) { state = READ_HUM; retry_times = 0; } else { retry_times++; if(retry_times >= 5) { state = READ_TEMP; retry_times =0 ; } } break; case TRIGGER_TEMP: if(htu21d_trigger_measurement_no_hold_master(SELECT_TEMP)) { state = READ_TEMP; retry_times = 0; } else { retry_times++; if(retry_times >= 5) { state = READ_HUM; retry_times =0 ; } } break; case READ_HUM: if(htu21d_read_measurement_no_hold_master(SELECT_HUM, &src_buffer)) { //printd("Read HUM success src_buffer =0x%x\n\r" ,src_buffer); if(htu21d_calculation(SELECT_HUM, src_buffer, &dst_buffer)) { humidity_buf = dst_buffer; modbus.HH = Calculate(humidity_buf, modbus.Hum_SensorValue, modbus.Hum_MeterValue, modbus.Hum_Cal_point); sprintf(str, "HH=%u\n\r", (uint16_t)modbus.HH); AS2_SendBlock(AS2_ptr, str, strlen(str)) ; Delay(3); } state = TRIGGER_TEMP; // state = TRIGGER_HUM; retry_times = 0; } else { retry_times++; if(retry_times >= 5) { state = READ_TEMP; retry_times = 0 ; } } break; case READ_TEMP: if(htu21d_read_measurement_no_hold_master(SELECT_TEMP, &src_buffer)) { //printd("Read Temp success src_buffer =0x%x\n\r" ,src_buffer); if(htu21d_calculation(SELECT_TEMP, src_buffer, &dst_buffer)) { temperature_buf = dst_buffer ; modbus.HT = temperature_buf ; sprintf(str, "HT=%u\n\r", (uint16_t)modbus.HT); AS2_SendBlock(AS2_ptr, str, strlen(str)) ; Delay(5); // printd("\n\rH_T = %d Hum = %u", modbus.H_Temp,modbus.Hum); //temperature_buf = dst_buffer; //temperature_value = temperature_buf + temperature_calibration; } state = TRIGGER_HUM; retry_times = 0; } else { retry_times++; if(retry_times >= 5) { state = READ_HUM; retry_times = 0 ; } } break; default: break; } }