Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: UART9BIT.CPP
- Revision:
- 7:af4ceb878eee
- Parent:
- 6:64f5dad70ee2
- Child:
- 8:716d4274f7b7
--- a/UART9BIT.CPP Wed Aug 21 16:27:30 2019 +0800
+++ b/UART9BIT.CPP Fri Aug 23 19:05:10 2019 +0800
@@ -13,7 +13,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
+
+
#include "UART9BIT.h"
#include "serial_api9bit.h"
@@ -38,8 +39,14 @@
void UART9BIT::interrupt_handler_asynch(void)
{
- int event = serial_irq_handler_asynch(&_serial);
+ int event;
int rx_event = event & SERIAL_EVENT_RX_MASK;
+
+ if(Enable9Bit)
+ event=serial_irq_handler_asynch9bit(&_serial);
+ else
+ event=serial_irq_handler_asynch(&_serial);
+
if (_rx_asynch_set && rx_event) {
event_callback_t cb = _rx_callback;
@@ -91,10 +98,16 @@
_thunk9_irq.callback(&UART9BIT::interrupt_handler_asynch);
sleep_manager_lock_deep_sleep();
- printf("U9 11 \r\n");
-
- serial_tx_asynch9bit(&_serial, buffer, buffer_size, buffer_width, _thunk_irq.entry(), event, _tx_usage);
- printf("U9 12 \r\n");
+
+ if(Enable9Bit)
+ {
+ serial_tx_asynch9bit(&_serial, buffer, buffer_size, buffer_width, _thunk9_irq.entry(), event, _tx_usage);
+ }
+ else
+ {
+ serial_tx_asynch(&_serial, buffer, buffer_size, buffer_width, _thunk9_irq.entry(), event, _tx_usage);
+ }
+
}
@@ -102,9 +115,21 @@
{
_rx_asynch_set = true;
_rx_callback = callback;
+
+
_thunk9_irq.callback(&UART9BIT::interrupt_handler_asynch);
sleep_manager_lock_deep_sleep();
- serial_rx_asynch(&_serial, buffer, buffer_size, buffer_width, _thunk_irq.entry(), event, char_match, _rx_usage);
+
+ if(Enable9Bit)
+ {
+ serial_rx_asynch9bit(&_serial, buffer, buffer_size, buffer_width, _thunk9_irq.entry(), event, char_match, _rx_usage);
+ printf("serial_rx_asynch9bit \r\n");
+ }
+ else
+ {
+ serial_rx_asynch(&_serial, buffer, buffer_size, buffer_width, _thunk9_irq.entry(), event, char_match, _rx_usage);
+ }
+
}
@@ -113,7 +138,7 @@
{
int result = 0;
lock();
- if (!serial_rx_active(&_serial) && !_rx_asynch_set) {
+ if (!serial_rx_active(&_serial) && !_rx_asynch_set) {
start_read((void *)buffer, length, 16, callback, event, char_match);
} else {
result = -1; // transaction ongoing
@@ -122,6 +147,21 @@
return result;
}
+int UART9BIT::GitRxDataLen(void)
+{
+ int retcnt=0;
+ retcnt=_serial.rx_buff.pos;
+
+ return retcnt;
+}
+
+void UART9BIT::SetRxDataLen(size_t len)
+{
+ int retcnt=0;
+ _serial.rx_buff.pos=len;
+
+
+}