|
@@ -16,6 +16,37 @@
|
|
// Variable that holds the IR protocol transmission. 1 start bit, 72 data bits and one stop bit
|
|
// Variable that holds the IR protocol transmission. 1 start bit, 72 data bits and one stop bit
|
|
rmt_item32_t toshiba_rmt[1 + 72 + 1 + 1];
|
|
rmt_item32_t toshiba_rmt[1 + 72 + 1 + 1];
|
|
|
|
|
|
|
|
+QueueHandle_t toshibaTxQueue = NULL;
|
|
|
|
+
|
|
|
|
+void toshibaTxTask(void *pvParameter)
|
|
|
|
+{
|
|
|
|
+ ESP_LOGI("TX", "toshibaTxTask() starting.");
|
|
|
|
+
|
|
|
|
+ uint8_t data[8];
|
|
|
|
+
|
|
|
|
+ while( true ) {
|
|
|
|
+ if( xQueueReceive( toshibaTxQueue, data, 100 ) == pdTRUE ) {
|
|
|
|
+ ESP_LOGI("TOSHIBA","Received a TX from MQTT");
|
|
|
|
+
|
|
|
|
+ uint8_t irPair = 1;
|
|
|
|
+ for(uint8_t b=0;b<kToshibaNumberOfBits;b++) {
|
|
|
|
+
|
|
|
|
+ uint8_t byteNo = b / 8;
|
|
|
|
+ uint8_t shiftBits = b % 8;
|
|
|
|
+ uint8_t bit_data = (1u << (7-shiftBits)) & data[byteNo];
|
|
|
|
+ uint32_t space = bit_data ? kToshibaAcOneSpace : kToshibaAcZeroSpace;
|
|
|
|
+
|
|
|
|
+ toshiba_rmt[irPair].val = (kToshibaAcBitMark << 0) | (1 << 15) | (space << 16); // Header of IR Transmit
|
|
|
|
+
|
|
|
|
+ irPair++;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ESP_ERROR_CHECK(rmt_write_items(RMT_TX_CHANNEL, &(toshiba_rmt[0]), 1+72+1, true));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
void initIrTransmit() {
|
|
void initIrTransmit() {
|
|
|
|
|
|
@@ -50,12 +81,8 @@ void initIrTransmit() {
|
|
toshiba_rmt[i].val = (kToshibaAcBitMark << 0) | (1 << 15) | (kToshibaAcZeroSpace << 16); // Header of IR Transmit
|
|
toshiba_rmt[i].val = (kToshibaAcBitMark << 0) | (1 << 15) | (kToshibaAcZeroSpace << 16); // Header of IR Transmit
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ toshibaTxQueue = xQueueCreate( 5, kToshibaNumberOfBytes );
|
|
|
|
+ xTaskCreatePinnedToCore(toshibaTxTask, "toshibaTxTask", 1024*10, NULL, 2, NULL,0);
|
|
|
|
+
|
|
ESP_LOGI("IR_TX","Init done.");
|
|
ESP_LOGI("IR_TX","Init done.");
|
|
}
|
|
}
|
|
-
|
|
|
|
-void sendToshibaIRData() {
|
|
|
|
-
|
|
|
|
- ESP_LOGI("IR_TX","Send test-code");
|
|
|
|
- ESP_ERROR_CHECK(rmt_write_items(RMT_TX_CHANNEL, &(toshiba_rmt[0]), 1+72+1, true));
|
|
|
|
- ESP_LOGI("IR_TX","Send done....");
|
|
|
|
-}
|
|
|