Mark Chen / NU480_UART_9BIT
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;
+  
+
+}