- if (irsnd_protocol == IRMP_BANG_OLUFSEN_PROTOCOL)\r
- {\r
- if (current_bit == 0) // send 2nd start bit\r
- {\r
- pulse_len = BANG_OLUFSEN_START_BIT2_PULSE_LEN;\r
- pause_len = BANG_OLUFSEN_START_BIT2_PAUSE_LEN - 1;\r
- }\r
- else if (current_bit == 1) // send 3rd start bit\r
- {\r
- pulse_len = BANG_OLUFSEN_START_BIT3_PULSE_LEN;\r
- pause_len = BANG_OLUFSEN_START_BIT3_PAUSE_LEN - 1;\r
- }\r
- else if (current_bit == 2) // send 4th start bit\r
- {\r
- pulse_len = BANG_OLUFSEN_START_BIT2_PULSE_LEN;\r
- pause_len = BANG_OLUFSEN_START_BIT2_PAUSE_LEN - 1;\r
- }\r
- else if (current_bit == 19) // send trailer bit\r
- {\r
- pulse_len = BANG_OLUFSEN_PULSE_LEN;\r
- pause_len = BANG_OLUFSEN_TRAILER_BIT_PAUSE_LEN - 1;\r
- }\r
- else if (current_bit < BANG_OLUFSEN_COMPLETE_DATA_LEN) // send n'th bit\r
- {\r
- uint8_t cur_bit_value = (irsnd_buffer[current_bit / 8] & (1<<(7-(current_bit % 8)))) ? 1 : 0;\r
- pulse_len = BANG_OLUFSEN_PULSE_LEN;\r
-\r
- if (cur_bit_value == last_bit_value)\r
- {\r
- pause_len = BANG_OLUFSEN_R_PAUSE_LEN - 1;\r
- }\r
- else\r
- {\r
- pause_len = cur_bit_value ? (BANG_OLUFSEN_1_PAUSE_LEN - 1) : (BANG_OLUFSEN_0_PAUSE_LEN - 1);\r
- last_bit_value = cur_bit_value;\r
- }\r
- }\r
- }\r
- else\r
-#endif\r
- if (irsnd_buffer[current_bit / 8] & (1<<(7-(current_bit % 8))))\r
- {\r
- pulse_len = pulse_1_len;\r
- pause_len = pause_1_len;\r
- }\r
- else\r
- {\r
- pulse_len = pulse_0_len;\r
- pause_len = pause_0_len;\r
- }\r
- }\r
- else if (has_stop_bit) // send stop bit\r
- {\r
- pulse_len = pulse_0_len;\r
-\r
- if (auto_repetition_counter < n_auto_repetitions)\r
- {\r
- pause_len = pause_0_len;\r
- }\r
- else\r
- {\r
- pause_len = 255; // last frame: pause of 255\r
- }\r
- }\r
- }\r
-\r
- if (pulse_counter < pulse_len)\r
- {\r
- if (pulse_counter == 0)\r
- {\r
- irsnd_on ();\r
- }\r
- pulse_counter++;\r
- }\r
- else if (pause_counter < pause_len)\r
- {\r
- if (pause_counter == 0)\r
- {\r
- irsnd_off ();\r
- }\r
- pause_counter++;\r
- }\r
- else\r
- {\r
- current_bit++;\r
-\r
- if (current_bit >= complete_data_len + has_stop_bit)\r
- {\r
- current_bit = 0xFF;\r
- auto_repetition_counter++;\r
-\r
- if (auto_repetition_counter == n_auto_repetitions)\r
- {\r
- irsnd_busy = FALSE;\r
- auto_repetition_counter = 0;\r
- }\r
- new_frame = TRUE;\r
- }\r
-\r
- pulse_counter = 0;\r
- pause_counter = 0;\r
- }\r
- break;\r
- }\r
+ if (irsnd_protocol == IRMP_BANG_OLUFSEN_PROTOCOL)\r
+ {\r
+ if (current_bit == 0) // send 2nd start bit\r
+ {\r
+ pulse_len = BANG_OLUFSEN_START_BIT2_PULSE_LEN;\r
+ pause_len = BANG_OLUFSEN_START_BIT2_PAUSE_LEN - 1;\r
+ }\r
+ else if (current_bit == 1) // send 3rd start bit\r
+ {\r
+ pulse_len = BANG_OLUFSEN_START_BIT3_PULSE_LEN;\r
+ pause_len = BANG_OLUFSEN_START_BIT3_PAUSE_LEN - 1;\r
+ }\r
+ else if (current_bit == 2) // send 4th start bit\r
+ {\r
+ pulse_len = BANG_OLUFSEN_START_BIT2_PULSE_LEN;\r
+ pause_len = BANG_OLUFSEN_START_BIT2_PAUSE_LEN - 1;\r
+ }\r
+ else if (current_bit == 19) // send trailer bit\r
+ {\r
+ pulse_len = BANG_OLUFSEN_PULSE_LEN;\r
+ pause_len = BANG_OLUFSEN_TRAILER_BIT_PAUSE_LEN - 1;\r
+ }\r
+ else if (current_bit < BANG_OLUFSEN_COMPLETE_DATA_LEN) // send n'th bit\r
+ {\r
+ uint8_t cur_bit_value = (irsnd_buffer[current_bit / 8] & (1<<(7-(current_bit % 8)))) ? 1 : 0;\r
+ pulse_len = BANG_OLUFSEN_PULSE_LEN;\r
+\r
+ if (cur_bit_value == last_bit_value)\r
+ {\r
+ pause_len = BANG_OLUFSEN_R_PAUSE_LEN - 1;\r
+ }\r
+ else\r
+ {\r
+ pause_len = cur_bit_value ? (BANG_OLUFSEN_1_PAUSE_LEN - 1) : (BANG_OLUFSEN_0_PAUSE_LEN - 1);\r
+ last_bit_value = cur_bit_value;\r
+ }\r
+ }\r
+ }\r
+ else\r
+#endif\r
+ if (irsnd_buffer[current_bit / 8] & (1<<(7-(current_bit % 8))))\r
+ {\r
+ pulse_len = pulse_1_len;\r
+ pause_len = pause_1_len;\r
+ }\r
+ else\r
+ {\r
+ pulse_len = pulse_0_len;\r
+ pause_len = pause_0_len;\r
+ }\r
+ }\r
+ else if (has_stop_bit) // send stop bit\r
+ {\r
+ pulse_len = pulse_0_len;\r
+\r
+ if (auto_repetition_counter < n_auto_repetitions)\r
+ {\r
+ pause_len = pause_0_len;\r
+ }\r
+ else\r
+ {\r
+ pause_len = 255; // last frame: pause of 255\r
+ }\r
+ }\r
+ }\r
+\r
+ if (pulse_counter < pulse_len)\r
+ {\r
+ if (pulse_counter == 0)\r
+ {\r
+ irsnd_on ();\r
+ }\r
+ pulse_counter++;\r
+ }\r
+ else if (pause_counter < pause_len)\r
+ {\r
+ if (pause_counter == 0)\r
+ {\r
+ irsnd_off ();\r
+ }\r
+ pause_counter++;\r
+ }\r
+ else\r
+ {\r
+ current_bit++;\r
+\r
+ if (current_bit >= complete_data_len + has_stop_bit)\r
+ {\r
+ current_bit = 0xFF;\r
+ auto_repetition_counter++;\r
+\r
+ if (auto_repetition_counter == n_auto_repetitions)\r
+ {\r
+ irsnd_busy = FALSE;\r
+ auto_repetition_counter = 0;\r
+ }\r
+ new_frame = TRUE;\r
+ }\r
+\r
+ pulse_counter = 0;\r
+ pause_counter = 0;\r
+ }\r
+ break;\r
+ }\r