/*
 * usrs.c
 *
 *  Created on: 2022年10月13日
 *      Author: 604-2
 */

#include "usrs.h"

//uart
UART_Handle uart = NULL;
UART_Params uartParams;
//uart buffer
char uart_header_str[30] = "STR0";
char uart_header_hex[5] = "HEX0";

PIN_State led_pins;
PIN_Handle led_handle = NULL;

//led config
PIN_Config led_cfg[5] = {
 LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
 LED2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
 LED3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
 LED4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
 PIN_TERMINATE
};

void Uart_Ini(){
    UART_init();
      // Create a UART with data processing off.
    UART_Params_init(&uartParams);
    uartParams.writeDataMode  = UART_DATA_BINARY;
    uartParams.readMode       = UART_MODE_CALLBACK; //Callback模式
    uartParams.readDataMode   = UART_DATA_BINARY;
    uartParams.readEcho = UART_ECHO_OFF;
    uartParams.baudRate = 256000;
    uartParams.readCallback = UART_Write_Callback;

    //uart = UART_open(CC2640R2DK_7ID_UART0, &uartParams);
    uart = UART_open(0, &uartParams);

    if (uart == NULL) {
         while (1);
    }
}

void UART_Write_Callback (UART_Handle handle, void *buf, size_t count){
    ;
}

void Uart_SendMsg(int type, const void *str, size_t len){
    if(uart){
          switch (type){
          case UART_HEADER_HEX:
              uart_header_hex[3] = len;
              for(int i = 0; i < len; ++ i){
                  uart_header_hex[i + 4] = *(const char *)(str + i);
              }
              UART_write(uart, uart_header_hex, 4 + len);
              break;
          case UART_HEADER_STR:
              uart_header_str[3] = len;
              for(int i = 0; i < len; ++ i){
                  uart_header_str[i + 4] = *(const char *)(str + i);
              }
              UART_write(uart, uart_header_str, 4 + len);
              break;
          default:
              return;
          };
    }
}


