Skip to content

Commit

Permalink
Add serial secondary qualifier
Browse files Browse the repository at this point in the history
  • Loading branch information
M-ichae-l committed Feb 7, 2023
1 parent 545c333 commit 790c972
Show file tree
Hide file tree
Showing 7 changed files with 286 additions and 12 deletions.
46 changes: 45 additions & 1 deletion Arduino_package/hardware/cores/ambd/HardwareSerial.h
Expand Up @@ -23,10 +23,54 @@

#include "Stream.h"

// Define config for Serial.begin(baud, config);
//#define SERIAL_5N1 0x00
//#define SERIAL_6N1 0x02
#define SERIAL_7N1 0x04
#define SERIAL_8N1 0x06
//#define SERIAL_5N2 0x08
//#define SERIAL_6N2 0x0A
#define SERIAL_7N2 0x0C
#define SERIAL_8N2 0x0E
//#define SERIAL_5E1 0x20
//#define SERIAL_6E1 0x22
#define SERIAL_7E1 0x24
#define SERIAL_8E1 0x26
//#define SERIAL_5E2 0x28
//#define SERIAL_6E2 0x2A
#define SERIAL_7E2 0x2C
#define SERIAL_8E2 0x2E
//#define SERIAL_5O1 0x30
//#define SERIAL_6O1 0x32
#define SERIAL_7O1 0x34
#define SERIAL_8O1 0x36
//#define SERIAL_5O2 0x38
//#define SERIAL_6O2 0x3A
#define SERIAL_7O2 0x3C
#define SERIAL_8O2 0x3E

//#define SERIAL_511 0x40
//#define SERIAL_611 0x42
#define SERIAL_711 0x44
#define SERIAL_811 0x46
//#define SERIAL_512 0x48
//#define SERIAL_612 0x4A
#define SERIAL_712 0x4C
#define SERIAL_812 0x4E
//#define SERIAL_501 0x50
//#define SERIAL_601 0x52
#define SERIAL_701 0x54
#define SERIAL_801 0x56
//#define SERIAL_502 0x58
//#define SERIAL_602 0x5A
#define SERIAL_702 0x5C
#define SERIAL_802 0x5E

class HardwareSerial : public Stream
{
public:
virtual void begin(unsigned long) = 0;
virtual void begin(unsigned long baud) { begin(baud, SERIAL_8N1); }
virtual void begin(unsigned long, uint8_t) = 0;
virtual void end() = 0;
virtual int available(void) = 0;
virtual int peek(void) = 0;
Expand Down
108 changes: 105 additions & 3 deletions Arduino_package/hardware/cores/ambd/LOGUARTClass.cpp
Expand Up @@ -88,8 +88,7 @@ void LOGUARTClass::IrqHandler(void)
serial_irq_set(&log_uart_obj, RxIrq, IrqEn);
}


void LOGUARTClass::begin(const uint32_t dwBaudRate)
void LOGUARTClass::begin(const uint32_t dwBaudRate, uint8_t serial_config_value)
{
// Log, UART_LOG
//serial_init(&log_uart_obj, PA_7, PA_8);
Expand All @@ -107,7 +106,110 @@ void LOGUARTClass::begin(const uint32_t dwBaudRate)
//serial_init(&uart_obj, PA_12, PA_13);
//serial_init(&uart_obj, PinName(g_APinDescription[SERIAL2_TX].pinname), PinName(g_APinDescription[SERIAL2_RX].pinname));

serial_format(&log_uart_obj, 8, ParityNone, 1);
switch(serial_config_value) {
// case SERIAL_5N1:
// break;
// case SERIAL_6N1:
// break;
case SERIAL_7N1:
serial_format(&log_uart_obj, 7, ParityNone, 1);
break;
case SERIAL_8N1:
serial_format(&log_uart_obj, 8, ParityNone, 1);
break;
// case SERIAL_5N2:
// break;
// case SERIAL_6N2:
// break;
case SERIAL_7N2:
serial_format(&log_uart_obj, 7, ParityNone, 2);
break;
case SERIAL_8N2:
serial_format(&log_uart_obj, 8, ParityNone, 2);
break;
// case SERIAL_5E1:
// break;
// case SERIAL_6E1:
// break;
case SERIAL_7E1:
serial_format(&log_uart_obj, 7, ParityEven, 1);
break;
case SERIAL_8E1:
serial_format(&log_uart_obj, 8, ParityEven, 1);
break;
// case SERIAL_5E2:
// break;
// case SERIAL_6E2:
// break;
case SERIAL_7E2:
serial_format(&log_uart_obj, 7, ParityEven, 2);
break;
case SERIAL_8E2:
serial_format(&log_uart_obj, 8, ParityEven, 2);
break;
// case SERIAL_5O1:
// break;
// case SERIAL_6O1:
// break;
case SERIAL_7O1:
serial_format(&log_uart_obj, 7, ParityOdd, 1);
break;
case SERIAL_8O1:
serial_format(&log_uart_obj, 8, ParityOdd, 1);
break;
// case SERIAL_5O2:
// break;
// case SERIAL_6O2:
// break;
case SERIAL_7O2:
serial_format(&log_uart_obj, 7, ParityOdd, 2);
break;
case SERIAL_8O2:
serial_format(&log_uart_obj, 8, ParityOdd, 2);
break;
// case SERIAL_511:
// break;
// case SERIAL_611:
// break;
case SERIAL_711:
serial_format(&log_uart_obj, 7, ParityForced1, 1);
break;
case SERIAL_811:
serial_format(&log_uart_obj, 8, ParityForced1, 1);
break;
// case SERIAL_512:
// break;
// case SERIAL_612:
// break;
case SERIAL_712:
serial_format(&log_uart_obj, 7, ParityForced1, 2);
break;
case SERIAL_812:
serial_format(&log_uart_obj, 8, ParityForced1, 2);
break;
// case SERIAL_501:
// break;
// case SERIAL_601:
// break;
case SERIAL_701:
serial_format(&log_uart_obj, 7, ParityForced0, 1);
break;
case SERIAL_801:
serial_format(&log_uart_obj, 8, ParityForced0, 1);
break;
// case SERIAL_502:
// break;
// case SERIAL_602:
// break;
case SERIAL_702:
serial_format(&log_uart_obj, 7, ParityForced0, 2);
break;
case SERIAL_802:
serial_format(&log_uart_obj, 8, ParityForced0, 2);
break;
default:
serial_format(&log_uart_obj, 8, ParityNone, 1);
}

uint32_t LOGUART_BaudRate = dwBaudRate;

Expand Down
3 changes: 2 additions & 1 deletion Arduino_package/hardware/cores/ambd/LOGUARTClass.h
Expand Up @@ -26,7 +26,8 @@ class LOGUARTClass : public HardwareSerial
{
public:
LOGUARTClass(int dwIrq, RingBuffer* pRx_buffer);
void begin(const uint32_t dwBaudRate);
void begin(const uint32_t dwBaudRate) { begin(dwBaudRate, SERIAL_8N1); }
void begin(const uint32_t dwBaudRate, uint8_t serial_config_value);
void end(void);
int available(void);
int peek(void);
Expand Down
68 changes: 65 additions & 3 deletions Arduino_package/hardware/cores/ambd/UARTClassOne.cpp
Expand Up @@ -92,8 +92,7 @@ void UARTClassOne::IrqHandler(void)
serial_irq_set(&uart_obj, RxIrq, IrqEn);
}


void UARTClassOne::begin(const uint32_t dwBaudRate)
void UARTClassOne::begin(const uint32_t dwBaudRate, uint8_t serial_config_value)
{
// Log, UART_LOG
//serial_init(&log_uart_obj, PA_7, PA_8);
Expand All @@ -111,7 +110,70 @@ void UARTClassOne::begin(const uint32_t dwBaudRate)
//serial_init(&uart_obj, PA_12, PA_13);
//serial_init(&uart_obj, PinName(g_APinDescription[SERIAL2_TX].pinname), PinName(g_APinDescription[SERIAL2_RX].pinname));

serial_format(&uart_obj, 8, ParityNone, 1);
switch(serial_config_value) {
case SERIAL_7N1:
serial_format(&uart_obj, 7, ParityNone, 1);
break;
case SERIAL_8N1:
serial_format(&uart_obj, 8, ParityNone, 1);
break;
case SERIAL_7N2:
serial_format(&uart_obj, 7, ParityNone, 2);
break;
case SERIAL_8N2:
serial_format(&uart_obj, 8, ParityNone, 2);
break;
case SERIAL_7E1:
serial_format(&uart_obj, 7, ParityEven, 1);
break;
case SERIAL_8E1:
serial_format(&uart_obj, 8, ParityEven, 1);
break;
case SERIAL_7E2:
serial_format(&uart_obj, 7, ParityEven, 2);
break;
case SERIAL_8E2:
serial_format(&uart_obj, 8, ParityEven, 2);
break;
case SERIAL_7O1:
serial_format(&uart_obj, 7, ParityOdd, 1);
break;
case SERIAL_8O1:
serial_format(&uart_obj, 8, ParityOdd, 1);
break;
case SERIAL_7O2:
serial_format(&uart_obj, 7, ParityOdd, 2);
break;
case SERIAL_8O2:
serial_format(&uart_obj, 8, ParityOdd, 2);
break;
case SERIAL_711:
serial_format(&uart_obj, 7, ParityForced1, 1);
break;
case SERIAL_811:
serial_format(&uart_obj, 8, ParityForced1, 1);
break;
case SERIAL_712:
serial_format(&uart_obj, 7, ParityForced1, 2);
break;
case SERIAL_812:
serial_format(&uart_obj, 8, ParityForced1, 2);
break;
case SERIAL_701:
serial_format(&uart_obj, 7, ParityForced0, 1);
break;
case SERIAL_801:
serial_format(&uart_obj, 8, ParityForced0, 1);
break;
case SERIAL_702:
serial_format(&uart_obj, 7, ParityForced0, 2);
break;
case SERIAL_802:
serial_format(&uart_obj, 8, ParityForced0, 2);
break;
default:
serial_format(&uart_obj, 8, ParityNone, 1);
}

uint32_t UART_BaudRate = dwBaudRate;

Expand Down
3 changes: 2 additions & 1 deletion Arduino_package/hardware/cores/ambd/UARTClassOne.h
Expand Up @@ -29,7 +29,8 @@ class UARTClassOne : public HardwareSerial
{
public:
UARTClassOne(int dwIrq, RingBuffer* pRx_buffer);
void begin(const uint32_t dwBaudRate);
void begin(const uint32_t dwBaudRate) { begin(dwBaudRate, SERIAL_8N1); }
void begin(const uint32_t dwBaudRate, uint8_t serial_config_value);
void end(void);
int available(void);
int peek(void);
Expand Down
67 changes: 65 additions & 2 deletions Arduino_package/hardware/cores/ambd/UARTClassTwo.cpp
Expand Up @@ -90,7 +90,7 @@ void UARTClassTwo::IrqHandler(void)
}


void UARTClassTwo::begin(const uint32_t dwBaudRate)
void UARTClassTwo::begin(const uint32_t dwBaudRate, uint8_t serial_config_value)
{
#if defined(BOARD_RTL8720DN_BW16)
// Log, UART_LOG
Expand Down Expand Up @@ -121,7 +121,70 @@ void UARTClassTwo::begin(const uint32_t dwBaudRate)
serial_init(&uart_obj, PinName(g_APinDescription[SERIAL2_TX].pinname), PinName(g_APinDescription[SERIAL2_RX].pinname));
#endif

serial_format(&uart_obj, 8, ParityNone, 1);
switch(serial_config_value) {
case SERIAL_7N1:
serial_format(&uart_obj, 7, ParityNone, 1);
break;
case SERIAL_8N1:
serial_format(&uart_obj, 8, ParityNone, 1);
break;
case SERIAL_7N2:
serial_format(&uart_obj, 7, ParityNone, 2);
break;
case SERIAL_8N2:
serial_format(&uart_obj, 8, ParityNone, 2);
break;
case SERIAL_7E1:
serial_format(&uart_obj, 7, ParityEven, 1);
break;
case SERIAL_8E1:
serial_format(&uart_obj, 8, ParityEven, 1);
break;
case SERIAL_7E2:
serial_format(&uart_obj, 7, ParityEven, 2);
break;
case SERIAL_8E2:
serial_format(&uart_obj, 8, ParityEven, 2);
break;
case SERIAL_7O1:
serial_format(&uart_obj, 7, ParityOdd, 1);
break;
case SERIAL_8O1:
serial_format(&uart_obj, 8, ParityOdd, 1);
break;
case SERIAL_7O2:
serial_format(&uart_obj, 7, ParityOdd, 2);
break;
case SERIAL_8O2:
serial_format(&uart_obj, 8, ParityOdd, 2);
break;
case SERIAL_711:
serial_format(&uart_obj, 7, ParityForced1, 1);
break;
case SERIAL_811:
serial_format(&uart_obj, 8, ParityForced1, 1);
break;
case SERIAL_712:
serial_format(&uart_obj, 7, ParityForced1, 2);
break;
case SERIAL_812:
serial_format(&uart_obj, 8, ParityForced1, 2);
break;
case SERIAL_701:
serial_format(&uart_obj, 7, ParityForced0, 1);
break;
case SERIAL_801:
serial_format(&uart_obj, 8, ParityForced0, 1);
break;
case SERIAL_702:
serial_format(&uart_obj, 7, ParityForced0, 2);
break;
case SERIAL_802:
serial_format(&uart_obj, 8, ParityForced0, 2);
break;
default:
serial_format(&uart_obj, 8, ParityNone, 1);
}

uint32_t UART_BaudRate = dwBaudRate;

Expand Down
3 changes: 2 additions & 1 deletion Arduino_package/hardware/cores/ambd/UARTClassTwo.h
Expand Up @@ -27,7 +27,8 @@ class UARTClassTwo : public HardwareSerial
public:
//UARTClassTwo(int dwIrq, RingBuffer* pRx_buffer);
UARTClassTwo(RingBuffer* pRx_buffer);
void begin(const uint32_t dwBaudRate);
void begin(const uint32_t dwBaudRate) { begin(dwBaudRate, SERIAL_8N1); }
void begin(const uint32_t dwBaudRate, uint8_t serial_config_value);
void end(void);
int available(void);
int peek(void);
Expand Down

0 comments on commit 790c972

Please sign in to comment.