Actually I understand what a break signal is. Maybe not exactly the underlying timing...
BUT what you are mentioning is what it would do on a hardware UART. What is unclear is what does it do with a USB connection? And it may or may not be handled in the same way on the PC. It may depend on which lower level driver (FTDI vs ACM... )
I thought I would suggest the above as a quick and dirty way to see if maybe there was some indicator you could detect.
This may be more of something that @Paul may be able to answer. For example it may be that maybe it is signaled in a different way, like maybe some USB event, or what I may suspect, maybe it sends a packet with no data...
Why I might suspect it: is in usb.c I see:
Code:
// fall through to next case, to always send ZLP ACK
case 0x2321: // CDC_SEND_BREAK
endpoint0_receive(NULL, 0, 0);
return;
Now maybe that is nothing.
But in usb_serial.c in the static void rx_event(transfer_t *t)
method is a test for len > 0...
The else case (it does nothing except to re queue the transfer...
So if it were me, I would probably add some form of debug to the else clause and see if you hit it with this... But as it is a .c file you can not directly call things like Serial.print... I have hacked it in the past where put in temporary CPP file with simple wrapper function to call Serial.print... Maybe a few different options... Make the functions with C calling... and then extern it in the file I am debugging.
Or sometimes I use the pre made wrappers, for Serial1 like (serial_print(const char *p) and then output over Serial1...
And if this is the case, then maybe we need some form of API or method on the Serial object to detect when this happens...
But again that is more a question to Paul.