[FL-1684] IRDA Add SIRC protocol (#693)
* IRDA HAL: Fill buffer refactoring * IRDA: Add SIRC protocol * IRDA: correct adr/cmd bit length * Disable Unit tests Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
@@ -442,7 +442,7 @@ static void furi_hal_irda_tx_fill_buffer(uint8_t buf_num, uint8_t polarity_shift
|
||||
buffer->polarity[polarity_counter++] = IRDA_TX_CCMR_LOW;
|
||||
}
|
||||
|
||||
for (*size = 0; (*size < IRDA_TIM_TX_DMA_BUFFER_SIZE) && (status == FuriHalIrdaTxGetDataStateOk); ++(*size), ++polarity_counter) {
|
||||
for (*size = 0; (*size < IRDA_TIM_TX_DMA_BUFFER_SIZE) && (status == FuriHalIrdaTxGetDataStateOk);) {
|
||||
if (irda_tim_tx.tx_timing_rest_duration > 0) {
|
||||
if (irda_tim_tx.tx_timing_rest_duration > 0xFFFF) {
|
||||
buffer->data[*size] = 0xFFFF;
|
||||
@@ -453,6 +453,8 @@ static void furi_hal_irda_tx_fill_buffer(uint8_t buf_num, uint8_t polarity_shift
|
||||
}
|
||||
irda_tim_tx.tx_timing_rest_duration -= buffer->data[*size];
|
||||
buffer->polarity[polarity_counter] = irda_tim_tx.tx_timing_rest_level ? IRDA_TX_CCMR_HIGH : IRDA_TX_CCMR_LOW;
|
||||
++(*size);
|
||||
++polarity_counter;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -467,18 +469,16 @@ static void furi_hal_irda_tx_fill_buffer(uint8_t buf_num, uint8_t polarity_shift
|
||||
*/
|
||||
status = FuriHalIrdaTxGetDataStateOk;
|
||||
}
|
||||
--(*size);
|
||||
--polarity_counter;
|
||||
} else if ((num_of_impulses - 1) > 0xFFFF) {
|
||||
irda_tim_tx.tx_timing_rest_duration = num_of_impulses - 1;
|
||||
irda_tim_tx.tx_timing_rest_status = status;
|
||||
irda_tim_tx.tx_timing_rest_level = level;
|
||||
--(*size);
|
||||
--polarity_counter;
|
||||
status = FuriHalIrdaTxGetDataStateOk;
|
||||
} else {
|
||||
buffer->polarity[polarity_counter] = level ? IRDA_TX_CCMR_HIGH : IRDA_TX_CCMR_LOW;
|
||||
buffer->data[*size] = num_of_impulses - 1;
|
||||
++(*size);
|
||||
++polarity_counter;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user