mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 11:46:31 +00:00
Merge pull request #9746 from thefloweringash/fix-ir-raw
Fix IRsend raw
This commit is contained in:
commit
7b95af3292
@ -688,8 +688,7 @@ uint32_t IrRemoteParseRawCompact(char * str, uint16_t * arr, size_t arr_len) {
|
||||
// count: number of commas in parameters, i.e. it contains count+1 values
|
||||
// repeat: number of repeats (0 means no repeat)
|
||||
//
|
||||
uint32_t IrRemoteSendRawStandard(char ** pp, uint32_t count, uint32_t repeat) {
|
||||
uint16_t freq = parsqeFreq(*pp);
|
||||
uint32_t IrRemoteSendRawStandard(char ** pp, uint16_t freq, uint32_t count, uint32_t repeat) {
|
||||
// IRsend 0,896,876,900,888,894,876,1790,874,872,1810,1736,948,872,880,872,936,872,1792,900,888,1734
|
||||
// IRsend 0,+8570-4240+550-1580C-510+565-1565F-505Fh+570gFhIdChIgFeFgFgIhFgIhF-525C-1560IhIkI-520ChFhFhFgFhIkIhIgIgIkIkI-25270A-4225IkIhIgIhIhIkFhIkFjCgIhIkIkI-500IkIhIhIkFhIgIl+545hIhIoIgIhIkFhFgIkIgFgI
|
||||
|
||||
@ -719,36 +718,6 @@ uint32_t IrRemoteSendRawStandard(char ** pp, uint32_t count, uint32_t repeat) {
|
||||
free(arr);
|
||||
}
|
||||
return IE_NO_ERROR;
|
||||
|
||||
|
||||
|
||||
count++;
|
||||
if (count < 200) {
|
||||
uint16_t raw_array[count]; // It's safe to use stack for up to 200 packets (limited by mqtt_data length)
|
||||
for (uint32_t i = 0; i < count; i++) {
|
||||
raw_array[i] = strtol(strtok_r(nullptr, ", ", pp), nullptr, 0); // Allow decimal (20496) and hexadecimal (0x5010) input
|
||||
}
|
||||
|
||||
irsend_active = true;
|
||||
for (uint32_t r = 0; r <= repeat; r++) {
|
||||
irsend->sendRaw(raw_array, count, freq);
|
||||
}
|
||||
} else {
|
||||
uint16_t *raw_array = reinterpret_cast<uint16_t*>(malloc(count * sizeof(uint16_t)));
|
||||
if (raw_array == nullptr) {
|
||||
return IE_INVALID_RAWDATA;
|
||||
}
|
||||
|
||||
for (uint32_t i = 0; i < count; i++) {
|
||||
raw_array[i] = strtol(strtok_r(nullptr, ", ", pp), nullptr, 0); // Allow decimal (20496) and hexadecimal (0x5010) input
|
||||
}
|
||||
|
||||
irsend_active = true;
|
||||
for (uint32_t r = 0; r <= repeat; r++) {
|
||||
irsend->sendRaw(raw_array, count, freq);
|
||||
}
|
||||
free(raw_array);
|
||||
}
|
||||
}
|
||||
|
||||
// parse the frequency value
|
||||
@ -796,7 +765,7 @@ uint32_t IrRemoteCmndIrSendRaw(void)
|
||||
// standard raw
|
||||
// IRsend <freq>,<rawdata>,<rawdata> ...
|
||||
// IRsend <freq>,<compact_rawdata>
|
||||
return IrRemoteSendRawStandard(&p, count, repeat);
|
||||
return IrRemoteSendRawStandard(&p, parsqeFreq(str), count, repeat);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user