a little deeper) In my opinion what is happening is as follows:
Sony remote, button Vol- :
Info:IR:IR IR_Sony 0x10 0x13 0
Info:IR:IR IR_Sony 0x10 0x13 1
send command:
irsend sony-10-13-1
info:IR:IR send sony-10-13-1 protocol 21 addr 0x10 cmd 0x13 repeats 1
result:
Just the start bit!
The command is sent like this:
drv_ir.cpp:459
IRData data;
memset(&data, 0, sizeof(data));
here the numberofbits value in the structure becomes zero and when you parse the command, it's not set
drv_ir.cpp:474
pIRsend->write(&data, (int_fast8_t) repeats);
IRSend.hpp:152...
size_t IRsend::write(IRData *aIRSendData, int_fast8_t aNumberOfRepeats) {
IRSend.hpp:205
sendSony(tAddress, tCommand, aNumberOfRepeats, aIRSendData->numberOfBits);
ir_Sony.hpp:
sendPulseDistanceWidth(&SonyProtocolConstants, tData, numberOfBits, aNumberOfRepeats);
.
In other protocols (e.g. NEC) the number of bits is a constant, so everything works there.
I don't know how to fix this better. Maybe use sony for protocol sony12 and add protocols sony15,sony20. Or some other way
.
Sony remote, button Vol- :
Info:IR:IR IR_Sony 0x10 0x13 0
Info:IR:IR IR_Sony 0x10 0x13 1

send command:
irsend sony-10-13-1
info:IR:IR send sony-10-13-1 protocol 21 addr 0x10 cmd 0x13 repeats 1
result:

Just the start bit!
The command is sent like this:
drv_ir.cpp:459
IRData data;
memset(&data, 0, sizeof(data));
here the numberofbits value in the structure becomes zero and when you parse the command, it's not set
drv_ir.cpp:474
pIRsend->write(&data, (int_fast8_t) repeats);
IRSend.hpp:152...
size_t IRsend::write(IRData *aIRSendData, int_fast8_t aNumberOfRepeats) {
IRSend.hpp:205
sendSony(tAddress, tCommand, aNumberOfRepeats, aIRSendData->numberOfBits);
ir_Sony.hpp:
sendPulseDistanceWidth(&SonyProtocolConstants, tData, numberOfBits, aNumberOfRepeats);
.
In other protocols (e.g. NEC) the number of bits is a constant, so everything works there.
I don't know how to fix this better. Maybe use sony for protocol sony12 and add protocols sony15,sony20. Or some other way
.