Hello,
i´m working on a K-Line interface using a STM32F105. The middleware lib is successfully installed and the virtual com port is running good with the CDC ACM feature.
Now there is a special problem. The KWP2000 protocol is using a special RS232 feature called send line break condition. There is a SEND_BREAK request (23h) send from Windows via the usbser.sys driver to the middleware library. So the cortex as to apply a positiv voltage on the rs-232 tx-line.
I could´t find the point or the function which is called or is it not implemented in the usb device class?
It is implemented however it was not exposed externally there is a function which prototype is as follows:
bool USBD_CDC_ACM_CoreSendBreak (uint8_t instance, uint16_t dur)
you should implement that function and it should return true, anyway it will be used instead of the default library function with same name and you will be able to handle Send Break request.
Hey Milorad, thanks for the fast answer. I have already testet some "Core" functions but they are all already defined in the compiled USB_CM3.lib. I think they are translated in the library from USBD_CDC_ACM_CoreSendBreak to USBD_CDC_ACM_SendBreak but i couldn´t verify it because it has never been called.
Are you sure the SendBreak funktion is the right way ?
I´m looking for the function in the CDC ACM which is called when windows send "IOCTL_SERIAL_SET_BREAK_ON" for example.
Maybe the "USBD_CDC_ACM_Core_SendBreak" is the way back to the usb-host ???
Hi Wolf,
the only thing that CDC offers regarding break signalling is SEND_BREAK command 23h, which is specified in details in PSTN120.pdf from USB.org file.
If you are able to see USB traffic then when you do your mentioned "IOCTL_SERIAL_SET_BREAK_ON" you should be able to see control endpoint 0 request SEND_BREAK.
That request will be passed to USBD_CDC_ACM_CoreSendBreak function which if you implement it will do whatever you implement.