add more files
This commit is contained in:
@@ -3,12 +3,8 @@ import os
|
|||||||
|
|
||||||
cwd = GetCurrentDir()
|
cwd = GetCurrentDir()
|
||||||
src = Glob('*.c')
|
src = Glob('*.c')
|
||||||
src += Glob('bsp/*.c')
|
|
||||||
src += Glob('thread/*.c')
|
|
||||||
|
|
||||||
path = [cwd]
|
path = [cwd]
|
||||||
path += [cwd + '/bsp']
|
|
||||||
path += [cwd + '/thread']
|
|
||||||
|
|
||||||
group = DefineGroup('Applications', src, depend = [''], CPPPATH = path)
|
group = DefineGroup('Applications', src, depend = [''], CPPPATH = path)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
from building import *
|
||||||
|
import os
|
||||||
|
|
||||||
|
cwd = GetCurrentDir()
|
||||||
|
src = Glob('*.c')
|
||||||
|
|
||||||
|
path = [cwd]
|
||||||
|
|
||||||
|
group = DefineGroup('Applications/bsp', src, depend = [''], CPPPATH = path)
|
||||||
|
|
||||||
|
list = os.listdir(cwd)
|
||||||
|
for item in list:
|
||||||
|
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
|
||||||
|
group = group + SConscript(os.path.join(item, 'SConscript'))
|
||||||
|
|
||||||
|
Return('group')
|
||||||
@@ -5,6 +5,9 @@
|
|||||||
|
|
||||||
#include "chrg_can.h"
|
#include "chrg_can.h"
|
||||||
|
|
||||||
|
#define LOG_TAG "chrg.can"
|
||||||
|
#define DBG_LEVEL DBG_LOG
|
||||||
|
#include <rtdbg.h>
|
||||||
|
|
||||||
struct chrg_can_t chrgcan[TOTAL_CAN] = {
|
struct chrg_can_t chrgcan[TOTAL_CAN] = {
|
||||||
[IDX_CAN_1] = {
|
[IDX_CAN_1] = {
|
||||||
|
|||||||
@@ -5,6 +5,10 @@
|
|||||||
|
|
||||||
#include "chrg_clk.h"
|
#include "chrg_clk.h"
|
||||||
|
|
||||||
|
#define LOG_TAG "chrg.clk"
|
||||||
|
#define DBG_LEVEL DBG_LOG
|
||||||
|
#include <rtdbg.h>
|
||||||
|
|
||||||
struct chrg_clk_t chrgclk = {
|
struct chrg_clk_t chrgclk = {
|
||||||
.cnt = 0,
|
.cnt = 0,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
#include "fal.h"
|
#include "fal.h"
|
||||||
|
|
||||||
#define LOG_TAG "etc2.fal"
|
#define LOG_TAG "chrg.fal"
|
||||||
#define DBG_ENABLE
|
|
||||||
#define DBG_SECTION_NAME LOG_TAG
|
|
||||||
#define DBG_LEVEL DBG_LOG
|
#define DBG_LEVEL DBG_LOG
|
||||||
#define DBG_COLOR
|
|
||||||
#include <rtdbg.h>
|
#include <rtdbg.h>
|
||||||
|
|
||||||
static int chrg_fal_init (void)
|
static int chrg_fal_init (void)
|
||||||
|
|||||||
@@ -3,6 +3,9 @@
|
|||||||
|
|
||||||
#include "chrg_i2c.h"
|
#include "chrg_i2c.h"
|
||||||
|
|
||||||
|
#define LOG_TAG "chrg.i2c"
|
||||||
|
#define DBG_LEVEL DBG_LOG
|
||||||
|
#include <rtdbg.h>
|
||||||
|
|
||||||
struct chrg_i2c_t chrgi2c[TOTAL_I2C] = {
|
struct chrg_i2c_t chrgi2c[TOTAL_I2C] = {
|
||||||
[IDX_I2C_1] = {
|
[IDX_I2C_1] = {
|
||||||
@@ -85,7 +88,7 @@ static int chrg_i2c_init (void)
|
|||||||
pI2C = &chrgi2c[i];
|
pI2C = &chrgi2c[i];
|
||||||
pI2C->dev = (struct rt_i2c_bus_device *)rt_device_find(pI2C->name);
|
pI2C->dev = (struct rt_i2c_bus_device *)rt_device_find(pI2C->name);
|
||||||
if (RT_NULL == pI2C->dev) {
|
if (RT_NULL == pI2C->dev) {
|
||||||
rt_kprintf("dev '%s' not found.\r\n", pI2C->name);
|
LOG_E("dev '%s' not found.", pI2C->name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,10 @@
|
|||||||
|
|
||||||
#include "chrg_intr.h"
|
#include "chrg_intr.h"
|
||||||
|
|
||||||
|
#define LOG_TAG "chrg.intr"
|
||||||
|
#define DBG_LEVEL DBG_LOG
|
||||||
|
#include <rtdbg.h>
|
||||||
|
|
||||||
struct chrg_intr_t chrgintr[TOTAL_INTR] = {
|
struct chrg_intr_t chrgintr[TOTAL_INTR] = {
|
||||||
[IDX_INTR_I2C1] = {
|
[IDX_INTR_I2C1] = {
|
||||||
.name = NAME_INTR_I2C1,
|
.name = NAME_INTR_I2C1,
|
||||||
@@ -59,7 +63,7 @@ static void chrg_intr_tmr_callback (void* data)
|
|||||||
if (RT_NULL != pINTR) {
|
if (RT_NULL != pINTR) {
|
||||||
rt_ssize_t val = rt_pin_read(pINTR->pin);
|
rt_ssize_t val = rt_pin_read(pINTR->pin);
|
||||||
if (pINTR->value == val) {
|
if (pINTR->value == val) {
|
||||||
rt_kprintf("check pin '%s' intr %d.\r\n", pINTR->name, pINTR->value);
|
LOG_I("check pin '%s' intr %d.", pINTR->name, pINTR->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -69,7 +73,7 @@ static int chrg_intr_tmr_create (struct chrg_intr_t *pINTR)
|
|||||||
pINTR->tmr_fd = rt_timer_create(pINTR->name, chrg_intr_tmr_callback,
|
pINTR->tmr_fd = rt_timer_create(pINTR->name, chrg_intr_tmr_callback,
|
||||||
pINTR, pINTR->delay, RT_TIMER_FLAG_ONE_SHOT);
|
pINTR, pINTR->delay, RT_TIMER_FLAG_ONE_SHOT);
|
||||||
if (pINTR->tmr_fd == RT_NULL) {
|
if (pINTR->tmr_fd == RT_NULL) {
|
||||||
rt_kprintf("tmr create '%s' failed.\r\n", pINTR->name);
|
LOG_E("tmr create '%s' failed.", pINTR->name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +89,7 @@ static void chrg_intr_callback (void *args)
|
|||||||
if (pINTR->delay) {
|
if (pINTR->delay) {
|
||||||
rt_timer_start(pINTR->tmr_fd);
|
rt_timer_start(pINTR->tmr_fd);
|
||||||
}
|
}
|
||||||
rt_kprintf("pin '%s' intr %d.\r\n", pINTR->name, pINTR->value);
|
LOG_I("pin '%s' intr %d.", pINTR->name, pINTR->value);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,10 @@
|
|||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
#include "chrg_pin.h"
|
#include "chrg_pin.h"
|
||||||
|
|
||||||
|
#define LOG_TAG "chrg.pin"
|
||||||
|
#define DBG_LEVEL DBG_LOG
|
||||||
|
#include <rtdbg.h>
|
||||||
|
|
||||||
struct chrg_pin_t chrgpins[TOTAL_PINS] = {
|
struct chrg_pin_t chrgpins[TOTAL_PINS] = {
|
||||||
[IDX_PIN_LED1] = {
|
[IDX_PIN_LED1] = {
|
||||||
.index = IDX_PIN_LED1,
|
.index = IDX_PIN_LED1,
|
||||||
@@ -165,7 +169,7 @@ static rt_int32_t chrg_pin_timer_start (eIDX_PIN index)
|
|||||||
pPIN, pPIN->tmr_millis_on, RT_TIMER_FLAG_ONE_SHOT);
|
pPIN, pPIN->tmr_millis_on, RT_TIMER_FLAG_ONE_SHOT);
|
||||||
|
|
||||||
if (pPIN->tmr_fd == RT_NULL) {
|
if (pPIN->tmr_fd == RT_NULL) {
|
||||||
rt_kprintf("tmr create '%s' failed.\r\n", pPIN->tmr_name);
|
LOG_E("tmr create '%s' failed.", pPIN->tmr_name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include "chrg_switch.h"
|
#include "chrg_switch.h"
|
||||||
|
|
||||||
@@ -124,5 +125,40 @@ static int chrg_switch_init (void)
|
|||||||
INIT_ENV_EXPORT(chrg_switch_init);
|
INIT_ENV_EXPORT(chrg_switch_init);
|
||||||
|
|
||||||
|
|
||||||
|
static int north_ch(rt_uint8_t argc, char **argv)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (2 != argc) {
|
||||||
|
rt_kprintf("help : %s [0-3]\r\n", argv[0]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = chrg_switch_north((eIDX_CH)atoi(argv[1]));
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MSH_CMD_EXPORT(north_ch, north channel select);
|
||||||
|
|
||||||
|
|
||||||
|
static int south_ch(rt_uint8_t argc, char **argv)
|
||||||
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (2 != argc) {
|
||||||
|
rt_kprintf("help : %s [0-7]\r\n", argv[0]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = chrg_switch_south((eIDX_SOUTH_CH)atoi(argv[1]));
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MSH_CMD_EXPORT(south_ch, south channel select);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,7 @@
|
|||||||
#include "chrg_tmr.h"
|
#include "chrg_tmr.h"
|
||||||
|
|
||||||
#define LOG_TAG "chrg.tmr"
|
#define LOG_TAG "chrg.tmr"
|
||||||
#define DBG_ENABLE
|
|
||||||
#define DBG_SECTION_NAME LOG_TAG
|
|
||||||
#define DBG_LEVEL DBG_LOG
|
#define DBG_LEVEL DBG_LOG
|
||||||
#define DBG_COLOR
|
|
||||||
#include <rtdbg.h>
|
#include <rtdbg.h>
|
||||||
|
|
||||||
struct chrg_tmr_t chrgtmr[TOTAL_TMRS] = {
|
struct chrg_tmr_t chrgtmr[TOTAL_TMRS] = {
|
||||||
@@ -91,7 +88,7 @@ rt_err_t chrg_tmr_start (eIDX_TMR index, uint32_t timeo)
|
|||||||
pTMR->timeout.usec = timeo%1000000;
|
pTMR->timeout.usec = timeo%1000000;
|
||||||
|
|
||||||
if (rt_device_write(pTMR->dev, 0, &pTMR->timeout, sizeof(rt_hwtimerval_t)) != sizeof(rt_hwtimerval_t)) {
|
if (rt_device_write(pTMR->dev, 0, &pTMR->timeout, sizeof(rt_hwtimerval_t)) != sizeof(rt_hwtimerval_t)) {
|
||||||
rt_kprintf("set '%s' timeout failed.\r\n", pTMR->name);
|
LOG_E("set timer '%s' timeout failed.", pTMR->name);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,41 +8,54 @@
|
|||||||
#include "chrg_north.h"
|
#include "chrg_north.h"
|
||||||
#include "chrg_south.h"
|
#include "chrg_south.h"
|
||||||
|
|
||||||
|
#define LOG_TAG "chrg.tty"
|
||||||
|
#define DBG_LEVEL DBG_LOG
|
||||||
|
#include <rtdbg.h>
|
||||||
|
|
||||||
struct chrg_tty_t chrgtty[TOTAL_TTY] = {
|
struct chrg_tty_t chrgtty[TOTAL_TTY] = {
|
||||||
[IDX_TTY_RS485] = {
|
[IDX_TTY_RS485] = {
|
||||||
.dev = RT_NULL,
|
.dev = RT_NULL,
|
||||||
.name = DEV_NAME_RS485,
|
.name = DEV_NAME_RS485,
|
||||||
.index = IDX_TTY_RS485,
|
.index = IDX_TTY_RS485,
|
||||||
|
.baudrate = BAUD_RATE_115200,
|
||||||
|
.rb = RT_NULL,
|
||||||
},
|
},
|
||||||
[IDX_TTY_LCD] = {
|
[IDX_TTY_LCD] = {
|
||||||
.dev = RT_NULL,
|
.dev = RT_NULL,
|
||||||
.name = DEV_NAME_LCD,
|
.name = DEV_NAME_LCD,
|
||||||
.index = IDX_TTY_LCD,
|
.index = IDX_TTY_LCD,
|
||||||
|
.baudrate = BAUD_RATE_115200,
|
||||||
|
.rb = RT_NULL,
|
||||||
},
|
},
|
||||||
[IDX_TTY_NORTH] = {
|
[IDX_TTY_NORTH] = {
|
||||||
.dev = RT_NULL,
|
.dev = RT_NULL,
|
||||||
.name = DEV_NAME_NORTH,
|
.name = DEV_NAME_NORTH,
|
||||||
.index = IDX_TTY_NORTH,
|
.index = IDX_TTY_NORTH,
|
||||||
|
.baudrate = BAUD_RATE_2000000,
|
||||||
|
.rb = RT_NULL,
|
||||||
},
|
},
|
||||||
[IDX_TTY_SOUTH] = {
|
[IDX_TTY_SOUTH] = {
|
||||||
.dev = RT_NULL,
|
.dev = RT_NULL,
|
||||||
.name = DEV_NAME_SOUTH,
|
.name = DEV_NAME_SOUTH,
|
||||||
.index = IDX_TTY_SOUTH,
|
.index = IDX_TTY_SOUTH,
|
||||||
|
.baudrate = BAUD_RATE_2000000,
|
||||||
|
.rb = RT_NULL,
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static rt_err_t chrg_rs485_tty_input (rt_device_t dev, rt_size_t size)
|
static rt_err_t chrg_rs485_tty_input (rt_device_t dev, rt_size_t size)
|
||||||
{
|
{
|
||||||
rt_err_t ret = RT_EOK;
|
rt_err_t ret;
|
||||||
|
rt_uint8_t ch;
|
||||||
|
rt_size_t i;
|
||||||
struct chrg_tty_t *pTTY = &chrgtty[IDX_TTY_RS485];
|
struct chrg_tty_t *pTTY = &chrgtty[IDX_TTY_RS485];
|
||||||
|
|
||||||
pTTY->msg.dev = dev;
|
for (i = 0; i < size; i++) {
|
||||||
pTTY->msg.size = size;
|
if (rt_device_read(dev, 0, &ch, 1)) {
|
||||||
|
rt_ringbuffer_put_force(pTTY->rb, &ch, 1);
|
||||||
ret = rt_mq_send(&pTTY->mq_rx, &pTTY->msg, sizeof(struct rx_msg_t));
|
ret = rt_sem_release(&pTTY->sem_rx);
|
||||||
if (ret == -RT_EFULL) {
|
}
|
||||||
rt_kprintf("msg queue is full!\r\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -50,15 +63,16 @@ static rt_err_t chrg_rs485_tty_input (rt_device_t dev, rt_size_t size)
|
|||||||
|
|
||||||
static rt_err_t chrg_lcd_tty_input (rt_device_t dev, rt_size_t size)
|
static rt_err_t chrg_lcd_tty_input (rt_device_t dev, rt_size_t size)
|
||||||
{
|
{
|
||||||
rt_err_t ret = RT_EOK;
|
rt_err_t ret;
|
||||||
|
rt_uint8_t ch;
|
||||||
|
rt_size_t i;
|
||||||
struct chrg_tty_t *pTTY = &chrgtty[IDX_TTY_LCD];
|
struct chrg_tty_t *pTTY = &chrgtty[IDX_TTY_LCD];
|
||||||
|
|
||||||
pTTY->msg.dev = dev;
|
for (i = 0; i < size; i++) {
|
||||||
pTTY->msg.size = size;
|
if (rt_device_read(dev, 0, &ch, 1)) {
|
||||||
|
rt_ringbuffer_put_force(pTTY->rb, &ch, 1);
|
||||||
ret = rt_mq_send(&pTTY->mq_rx, &pTTY->msg, sizeof(struct rx_msg_t));
|
ret = rt_sem_release(&pTTY->sem_rx);
|
||||||
if (ret == -RT_EFULL) {
|
}
|
||||||
rt_kprintf("msg queue is full!\r\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -66,15 +80,16 @@ static rt_err_t chrg_lcd_tty_input (rt_device_t dev, rt_size_t size)
|
|||||||
|
|
||||||
static rt_err_t chrg_north_tty_input (rt_device_t dev, rt_size_t size)
|
static rt_err_t chrg_north_tty_input (rt_device_t dev, rt_size_t size)
|
||||||
{
|
{
|
||||||
rt_err_t ret = RT_EOK;
|
rt_err_t ret;
|
||||||
|
rt_uint8_t ch;
|
||||||
|
rt_size_t i;
|
||||||
struct chrg_tty_t *pTTY = &chrgtty[IDX_TTY_NORTH];
|
struct chrg_tty_t *pTTY = &chrgtty[IDX_TTY_NORTH];
|
||||||
|
|
||||||
pTTY->msg.dev = dev;
|
for (i = 0; i < size; i++) {
|
||||||
pTTY->msg.size = size;
|
if (rt_device_read(dev, 0, &ch, 1)) {
|
||||||
|
rt_ringbuffer_put_force(pTTY->rb, &ch, 1);
|
||||||
ret = rt_mq_send(&pTTY->mq_rx, &pTTY->msg, sizeof(struct rx_msg_t));
|
ret = rt_sem_release(&pTTY->sem_rx);
|
||||||
if (ret == -RT_EFULL) {
|
}
|
||||||
rt_kprintf("msg queue is full!\r\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -82,61 +97,31 @@ static rt_err_t chrg_north_tty_input (rt_device_t dev, rt_size_t size)
|
|||||||
|
|
||||||
static rt_err_t chrg_south_tty_input (rt_device_t dev, rt_size_t size)
|
static rt_err_t chrg_south_tty_input (rt_device_t dev, rt_size_t size)
|
||||||
{
|
{
|
||||||
rt_err_t ret = RT_EOK;
|
rt_err_t ret;
|
||||||
|
rt_uint8_t ch;
|
||||||
|
rt_size_t i;
|
||||||
struct chrg_tty_t *pTTY = &chrgtty[IDX_TTY_SOUTH];
|
struct chrg_tty_t *pTTY = &chrgtty[IDX_TTY_SOUTH];
|
||||||
|
|
||||||
pTTY->msg.dev = dev;
|
for (i = 0; i < size; i++) {
|
||||||
pTTY->msg.size = size;
|
if (rt_device_read(dev, 0, &ch, 1)) {
|
||||||
|
rt_ringbuffer_put_force(pTTY->rb, &ch, 1);
|
||||||
ret = rt_mq_send(&pTTY->mq_rx, &pTTY->msg, sizeof(struct rx_msg_t));
|
ret = rt_sem_release(&pTTY->sem_rx);
|
||||||
if (ret == -RT_EFULL) {
|
}
|
||||||
rt_kprintf("msg queue is full!\r\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void chrg_tty_recv_entry (void *data)
|
rt_err_t chrg_tty_open (struct chrg_tty_t *pTTY)
|
||||||
{
|
{
|
||||||
struct chrg_tty_t *pTTY = (struct chrg_tty_t *)data;
|
|
||||||
|
|
||||||
rt_err_t ret = RT_EOK;
|
rt_err_t ret = RT_EOK;
|
||||||
rt_int32_t rx_len = 0;
|
|
||||||
rt_uint8_t rx_raw[RT_SERIAL_RB_BUFSZ];
|
|
||||||
|
|
||||||
while (1) {
|
if (RT_NULL == pTTY) {
|
||||||
rt_memset(&pTTY->msg, 0, sizeof(struct rx_msg_t));
|
return RT_EEMPTY;
|
||||||
|
|
||||||
ret = rt_mq_recv(&pTTY->mq_rx, &pTTY->msg, sizeof(struct rx_msg_t), RT_WAITING_FOREVER);
|
|
||||||
if (ret == RT_EOK) {
|
|
||||||
rt_memset(rx_raw, 0, RT_SERIAL_RB_BUFSZ);
|
|
||||||
rx_len = rt_device_read(pTTY->msg.dev, 0, rx_raw, pTTY->msg.size);
|
|
||||||
if (rx_len > 0) {
|
|
||||||
switch (pTTY->index) {
|
|
||||||
case IDX_TTY_NORTH: {
|
|
||||||
struct chrg_north_t *pNOR = &chrgnor;
|
|
||||||
rt_memset(&pNOR->buf, 0, sizeof(pNOR->buf));
|
|
||||||
strcpy((char *)pNOR->buf, "send mb msg");
|
|
||||||
rt_mb_send(&pNOR->mb, (rt_uint32_t)&pNOR->buf);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
rt_err_t chrg_tty_thread (struct chrg_tty_t *pTTY)
|
|
||||||
{
|
|
||||||
rt_err_t ret = RT_EOK;
|
|
||||||
rt_thread_t tid_tty;
|
|
||||||
|
|
||||||
struct serial_configure cfg = {
|
struct serial_configure cfg = {
|
||||||
.baud_rate = BAUD_RATE_115200,
|
.baud_rate = pTTY->baudrate,
|
||||||
.data_bits = DATA_BITS_8,
|
.data_bits = DATA_BITS_8,
|
||||||
.stop_bits = STOP_BITS_1,
|
.stop_bits = STOP_BITS_1,
|
||||||
.parity = PARITY_NONE,
|
.parity = PARITY_NONE,
|
||||||
@@ -146,23 +131,21 @@ rt_err_t chrg_tty_thread (struct chrg_tty_t *pTTY)
|
|||||||
.flowcontrol = RT_SERIAL_FLOWCONTROL_NONE,
|
.flowcontrol = RT_SERIAL_FLOWCONTROL_NONE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pTTY->dev = rt_device_find(pTTY->name);
|
||||||
if (RT_NULL == pTTY->dev) {
|
if (RT_NULL == pTTY->dev) {
|
||||||
rt_kprintf("dev is null.\r\n");
|
LOG_E("dev '%s' not found.", pTTY->name);
|
||||||
return RT_ERROR;
|
return RT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
rt_mq_init(&pTTY->mq_rx, pTTY->name, pTTY->pool_msg,
|
|
||||||
sizeof(struct rx_msg_t), sizeof(pTTY->pool_msg), RT_IPC_FLAG_FIFO);
|
|
||||||
|
|
||||||
ret = rt_device_open(pTTY->dev, RT_DEVICE_OFLAG_RDWR|RT_DEVICE_FLAG_INT_RX);
|
ret = rt_device_open(pTTY->dev, RT_DEVICE_OFLAG_RDWR|RT_DEVICE_FLAG_INT_RX);
|
||||||
if (ret != RT_EOK) {
|
if (ret != RT_EOK) {
|
||||||
rt_kprintf("open '%s' failed.\r\n", pTTY->name);
|
LOG_E("open '%s' failed.", pTTY->name);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = rt_device_control(pTTY->dev, RT_DEVICE_CTRL_CONFIG, &cfg);
|
ret = rt_device_control(pTTY->dev, RT_DEVICE_CTRL_CONFIG, &cfg);
|
||||||
if (ret != RT_EOK) {
|
if (ret != RT_EOK) {
|
||||||
rt_kprintf("control '%s' failed.\r\n", pTTY->name);
|
LOG_E("control '%s' failed.", pTTY->name);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,14 +166,16 @@ rt_err_t chrg_tty_thread (struct chrg_tty_t *pTTY)
|
|||||||
return RT_ERROR;
|
return RT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
tid_tty = rt_thread_create(pTTY->name, chrg_tty_recv_entry,
|
ret = rt_sem_init(&pTTY->sem_rx, pTTY->name, 0, RT_IPC_FLAG_FIFO);
|
||||||
pTTY, 4096, RT_MAIN_THREAD_PRIORITY+2, 20);
|
if (ret != RT_EOK) {
|
||||||
|
LOG_E("sem init '%s' failed.", pTTY->name);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
if (tid_tty != RT_NULL) {
|
pTTY->rb = rt_ringbuffer_create(64);
|
||||||
rt_thread_startup(tid_tty);
|
if (RT_NULL == pTTY->rb) {
|
||||||
} else {
|
rt_kprintf("create rb failed.\r\n");
|
||||||
rt_kprintf("create thread '%s' failed.\r\n", pTTY->name);
|
return RT_ERROR;
|
||||||
return -RT_ERROR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return RT_EOK;
|
return RT_EOK;
|
||||||
@@ -207,14 +192,7 @@ static int chrg_tty_init (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
pTTY = &chrgtty[i];
|
pTTY = &chrgtty[i];
|
||||||
|
chrg_tty_open(pTTY);
|
||||||
pTTY->dev = rt_device_find(pTTY->name);
|
|
||||||
if (RT_NULL == pTTY->dev) {
|
|
||||||
rt_kprintf("dev '%s' not found.\r\n", pTTY->name);
|
|
||||||
return RT_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
chrg_tty_thread(pTTY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return RT_EOK;
|
return RT_EOK;
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
#define DEV_NAME_NORTH "uart3"
|
#define DEV_NAME_NORTH "uart3"
|
||||||
#define DEV_NAME_SOUTH "uart6"
|
#define DEV_NAME_SOUTH "uart6"
|
||||||
|
|
||||||
|
#define SIZE_BUF_UART 128
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
IDX_TTY_RS485 = 0, // 0
|
IDX_TTY_RS485 = 0, // 0
|
||||||
IDX_TTY_LCD, // 1
|
IDX_TTY_LCD, // 1
|
||||||
@@ -18,22 +20,17 @@ typedef enum {
|
|||||||
TOTAL_TTY
|
TOTAL_TTY
|
||||||
} eIDX_TTY;
|
} eIDX_TTY;
|
||||||
|
|
||||||
struct rx_msg_t {
|
|
||||||
rt_device_t dev;
|
|
||||||
rt_size_t size;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct chrg_tty_t {
|
struct chrg_tty_t {
|
||||||
rt_device_t dev;
|
rt_device_t dev;
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
|
rt_uint32_t baudrate;
|
||||||
eIDX_TTY index;
|
eIDX_TTY index;
|
||||||
rt_uint32_t len_rx;
|
|
||||||
rt_uint8_t buf_rx[RT_SERIAL_RB_BUFSZ];
|
|
||||||
|
|
||||||
struct rt_messagequeue mq_rx;
|
struct rt_ringbuffer *rb;
|
||||||
struct rx_msg_t msg;
|
struct rt_semaphore sem_rx;
|
||||||
rt_uint8_t pool_msg[1024];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct chrg_tty_t chrgtty[TOTAL_TTY];
|
extern struct chrg_tty_t chrgtty[TOTAL_TTY];
|
||||||
|
|||||||
@@ -4,6 +4,10 @@
|
|||||||
|
|
||||||
#include "chrg_wdt.h"
|
#include "chrg_wdt.h"
|
||||||
|
|
||||||
|
#define LOG_TAG "chrg.wdt"
|
||||||
|
#define DBG_LEVEL DBG_LOG
|
||||||
|
#include <rtdbg.h>
|
||||||
|
|
||||||
struct chrg_wdt_t chrgwdt = {
|
struct chrg_wdt_t chrgwdt = {
|
||||||
.dev = RT_NULL,
|
.dev = RT_NULL,
|
||||||
.name = DEV_NAME_WATCHDOG,
|
.name = DEV_NAME_WATCHDOG,
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
from building import *
|
||||||
|
import os
|
||||||
|
|
||||||
|
cwd = GetCurrentDir()
|
||||||
|
src = Glob('*.c')
|
||||||
|
|
||||||
|
path = [cwd]
|
||||||
|
|
||||||
|
group = DefineGroup('Applications/thread', src, depend = [''], CPPPATH = path)
|
||||||
|
|
||||||
|
list = os.listdir(cwd)
|
||||||
|
for item in list:
|
||||||
|
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
|
||||||
|
group = group + SConscript(os.path.join(item, 'SConscript'))
|
||||||
|
|
||||||
|
Return('group')
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
#include "chrg_comm.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#ifndef __CHRG_COMM_H__
|
||||||
|
#define __CHRG_COMM_H__
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
#include "chrg_lcd.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#ifndef __CHRG_LCD_H__
|
||||||
|
#define __CHRG_LCD_H__
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -4,58 +4,68 @@
|
|||||||
#include "chrg_north.h"
|
#include "chrg_north.h"
|
||||||
|
|
||||||
#define LOG_TAG "chrg.nor"
|
#define LOG_TAG "chrg.nor"
|
||||||
#define DBG_ENABLE
|
|
||||||
#define DBG_SECTION_NAME LOG_TAG
|
|
||||||
#define DBG_LEVEL DBG_LOG
|
#define DBG_LEVEL DBG_LOG
|
||||||
#define DBG_COLOR
|
|
||||||
#include <rtdbg.h>
|
#include <rtdbg.h>
|
||||||
|
|
||||||
struct chrg_north_t chrgnor = {
|
struct chrg_north_t chrgnor = {
|
||||||
|
.name = THR_NAME_NORTH,
|
||||||
.tid = RT_NULL,
|
.tid = RT_NULL,
|
||||||
.name = THRED_NAME_NORTH,
|
.tty = RT_NULL,
|
||||||
|
.rx_len = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void chrg_north_entry (void *data)
|
static void chrg_north_thread_entry (void *data)
|
||||||
{
|
{
|
||||||
|
rt_err_t ret = RT_EOK;
|
||||||
struct chrg_north_t *pNOR = (struct chrg_north_t *)data;
|
struct chrg_north_t *pNOR = (struct chrg_north_t *)data;
|
||||||
|
|
||||||
if (RT_NULL == pNOR) {
|
if ((RT_NULL == pNOR)||(RT_NULL == pNOR->tty)) {
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *str = RT_NULL;
|
rt_uint8_t ch;
|
||||||
|
struct chrg_tty_t *pTTY = pNOR->tty;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
if (rt_mb_recv(&pNOR->mb, (rt_uint32_t *)&str, RT_WAITING_FOREVER) == RT_EOK) {
|
ret = rt_sem_take(&pTTY->sem_rx, RT_WAITING_FOREVER);
|
||||||
rt_kprintf("%s recv %s\r\n", pNOR->name, str);
|
if (RT_EOK != ret) {
|
||||||
|
LOG_E("sem take failed. %d", ret);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
//rt_thread_mdelay(1000);
|
rt_ringbuffer_getchar(pTTY->rb, &ch);
|
||||||
|
if (pNOR->rx_len < SIZE_BUF_UART) {
|
||||||
|
pNOR->rx_buf[pNOR->rx_len++] = ch;
|
||||||
|
rt_kprintf("%c", ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pNOR->rx_len >= 32) {
|
||||||
|
pNOR->rx_len = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rt_mb_detach(&pNOR->mb);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int chrg_north_init (void)
|
static int chrg_north_init (void)
|
||||||
{
|
{
|
||||||
rt_err_t ret;
|
rt_err_t ret;
|
||||||
struct chrg_north_t *pNOR = &chrgnor;
|
struct chrg_north_t *pNOR = &chrgnor;
|
||||||
ret = rt_mb_init(&pNOR->mb, "mb_nor", &pNOR->mb_pool[0],
|
|
||||||
sizeof(pNOR->mb_pool)/4, RT_IPC_FLAG_FIFO);
|
pNOR->tty = &chrgtty[IDX_TTY_NORTH];
|
||||||
if (RT_NULL != ret) {
|
rt_memset(pNOR->rx_buf, 0, SIZE_BUF_UART);
|
||||||
LOG_E("mb init failed.");
|
|
||||||
return RT_ENOMEM;
|
ret = rt_mutex_init(&pNOR->lock, pNOR->name, RT_IPC_FLAG_FIFO);
|
||||||
|
if (ret != RT_EOK) {
|
||||||
|
LOG_E("init mutex '%s' failed.", pNOR->name);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
pNOR->tid = rt_thread_create(pNOR->name, chrg_north_entry, pNOR,
|
pNOR->tid = rt_thread_create(pNOR->name, chrg_north_thread_entry, pNOR, 4096,
|
||||||
4096, RT_MAIN_THREAD_PRIORITY, 10);
|
RT_MAIN_THREAD_PRIORITY, 20);
|
||||||
if (RT_NULL != pNOR->tid) {
|
if (RT_NULL != pNOR->tid) {
|
||||||
rt_thread_startup(pNOR->tid);
|
rt_thread_startup(pNOR->tid);
|
||||||
LOG_I("start thread '%s'.", pNOR->name);
|
|
||||||
} else {
|
} else {
|
||||||
LOG_E("start thread '%s' failed.", pNOR->name);
|
LOG_E("create thread '%s' failed.", pNOR->name);
|
||||||
return -RT_ERROR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -65,3 +75,21 @@ static int chrg_north_init (void)
|
|||||||
INIT_APP_EXPORT(chrg_north_init);
|
INIT_APP_EXPORT(chrg_north_init);
|
||||||
|
|
||||||
|
|
||||||
|
static int north_send(rt_uint8_t argc, char **argv)
|
||||||
|
{
|
||||||
|
rt_ssize_t ret = 0;
|
||||||
|
struct chrg_north_t *pNOR = &chrgnor;
|
||||||
|
struct chrg_tty_t *pTTY = pNOR->tty;
|
||||||
|
|
||||||
|
if (RT_NULL != pTTY->dev) {
|
||||||
|
ret = rt_device_write(pTTY->dev, 0, "1234567890abcdef", 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MSH_CMD_EXPORT(north_send, north send test);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,16 +2,18 @@
|
|||||||
#define __CHRG_NORTH_H__
|
#define __CHRG_NORTH_H__
|
||||||
|
|
||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
|
#include "chrg_tty.h"
|
||||||
|
|
||||||
#define THRED_NAME_NORTH "thr_nor"
|
#define THR_NAME_NORTH "thr_nor"
|
||||||
|
|
||||||
struct chrg_north_t {
|
struct chrg_north_t {
|
||||||
rt_thread_t tid;
|
const char *name;
|
||||||
const char *name;
|
struct rt_thread *tid;
|
||||||
|
struct rt_mutex lock;
|
||||||
|
|
||||||
struct rt_mailbox mb;
|
struct chrg_tty_t *tty;
|
||||||
rt_uint8_t mb_pool[128];
|
rt_uint16_t rx_len;
|
||||||
rt_uint8_t buf[256];
|
rt_uint8_t rx_buf[SIZE_BUF_UART];
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct chrg_north_t chrgnor;
|
extern struct chrg_north_t chrgnor;
|
||||||
|
|||||||
@@ -4,39 +4,68 @@
|
|||||||
#include "chrg_south.h"
|
#include "chrg_south.h"
|
||||||
|
|
||||||
#define LOG_TAG "chrg.sou"
|
#define LOG_TAG "chrg.sou"
|
||||||
#define DBG_ENABLE
|
|
||||||
#define DBG_SECTION_NAME LOG_TAG
|
|
||||||
#define DBG_LEVEL DBG_LOG
|
#define DBG_LEVEL DBG_LOG
|
||||||
#define DBG_COLOR
|
|
||||||
#include <rtdbg.h>
|
#include <rtdbg.h>
|
||||||
|
|
||||||
struct chrg_south_t chrgsou = {
|
struct chrg_south_t chrgsou = {
|
||||||
|
.name = THR_NAME_SOUTH,
|
||||||
.tid = RT_NULL,
|
.tid = RT_NULL,
|
||||||
.name = THRED_NAME_SOUTH,
|
.tty = RT_NULL,
|
||||||
|
.rx_len = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void chrg_south_entry (void *data)
|
static void chrg_south_thread_entry (void *data)
|
||||||
{
|
{
|
||||||
|
rt_err_t ret = RT_EOK;
|
||||||
|
struct chrg_south_t *pSOU = (struct chrg_south_t *)data;
|
||||||
|
|
||||||
|
if ((RT_NULL == pSOU)||(RT_NULL == pSOU->tty)) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
rt_uint8_t ch;
|
||||||
|
struct chrg_tty_t *pTTY = pSOU->tty;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
//rt_kprintf("sou\r\n");
|
ret = rt_sem_take(&pTTY->sem_rx, RT_WAITING_FOREVER);
|
||||||
rt_thread_mdelay(1000);
|
if (RT_EOK != ret) {
|
||||||
|
LOG_E("sem take failed. %d", ret);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
rt_ringbuffer_getchar(pTTY->rb, &ch);
|
||||||
|
if (pSOU->rx_len < SIZE_BUF_UART) {
|
||||||
|
pSOU->rx_buf[pSOU->rx_len++] = ch;
|
||||||
|
rt_kprintf("%c", ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pSOU->rx_len >= 32) {
|
||||||
|
pSOU->rx_len = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int chrg_south_init (void)
|
static int chrg_south_init (void)
|
||||||
{
|
{
|
||||||
|
rt_err_t ret;
|
||||||
struct chrg_south_t *pSOU = &chrgsou;
|
struct chrg_south_t *pSOU = &chrgsou;
|
||||||
|
|
||||||
pSOU->tid = rt_thread_create(pSOU->name, chrg_south_entry, pSOU,
|
pSOU->tty = &chrgtty[IDX_TTY_NORTH];
|
||||||
4096, RT_MAIN_THREAD_PRIORITY, 10);
|
rt_memset(pSOU->rx_buf, 0, SIZE_BUF_UART);
|
||||||
|
|
||||||
|
ret = rt_mutex_init(&pSOU->lock, pSOU->name, RT_IPC_FLAG_FIFO);
|
||||||
|
if (ret != RT_EOK) {
|
||||||
|
LOG_E("init mutex '%s' failed.", pSOU->name);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
pSOU->tid = rt_thread_create(pSOU->name, chrg_south_thread_entry, pSOU, 4096,
|
||||||
|
RT_MAIN_THREAD_PRIORITY, 20);
|
||||||
if (RT_NULL != pSOU->tid) {
|
if (RT_NULL != pSOU->tid) {
|
||||||
rt_thread_startup(pSOU->tid);
|
rt_thread_startup(pSOU->tid);
|
||||||
LOG_I("start thread '%s'.", pSOU->name);
|
|
||||||
} else {
|
} else {
|
||||||
LOG_E("start thread '%s' failed.", pSOU->name);
|
LOG_E("create thread '%s' failed.", pSOU->name);
|
||||||
return -RT_ERROR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -45,4 +74,21 @@ static int chrg_south_init (void)
|
|||||||
|
|
||||||
INIT_APP_EXPORT(chrg_south_init);
|
INIT_APP_EXPORT(chrg_south_init);
|
||||||
|
|
||||||
|
static int south_send(rt_uint8_t argc, char **argv)
|
||||||
|
{
|
||||||
|
rt_err_t ret;
|
||||||
|
struct chrg_south_t *pSOU = &chrgsou;
|
||||||
|
struct chrg_tty_t *pTTY = pSOU->tty;
|
||||||
|
|
||||||
|
if (RT_NULL != pTTY->dev) {
|
||||||
|
ret = rt_device_write(pTTY->dev, 0, "1234567890abcdef", 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
MSH_CMD_EXPORT(south_send, south send test);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2,13 +2,18 @@
|
|||||||
#define __CHRG_SOUTH_H__
|
#define __CHRG_SOUTH_H__
|
||||||
|
|
||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
|
#include "chrg_tty.h"
|
||||||
|
|
||||||
#define THRED_NAME_SOUTH "thr_sou"
|
#define THR_NAME_SOUTH "thr_sou"
|
||||||
|
|
||||||
struct chrg_south_t {
|
struct chrg_south_t {
|
||||||
rt_thread_t tid;
|
const char *name;
|
||||||
const char *name;
|
struct rt_thread *tid;
|
||||||
|
struct rt_mutex lock;
|
||||||
|
|
||||||
|
struct chrg_tty_t *tty;
|
||||||
|
rt_uint16_t rx_len;
|
||||||
|
rt_uint8_t rx_buf[SIZE_BUF_UART];
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct chrg_south_t chrgsou;
|
extern struct chrg_south_t chrgsou;
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
from building import *
|
||||||
|
import os
|
||||||
|
|
||||||
|
cwd = GetCurrentDir()
|
||||||
|
src = Glob('*.c')
|
||||||
|
|
||||||
|
path = [cwd]
|
||||||
|
|
||||||
|
group = DefineGroup('Applications/utils', src, depend = [''], CPPPATH = path)
|
||||||
|
|
||||||
|
list = os.listdir(cwd)
|
||||||
|
for item in list:
|
||||||
|
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
|
||||||
|
group = group + SConscript(os.path.join(item, 'SConscript'))
|
||||||
|
|
||||||
|
Return('group')
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
#include "chrg_pcf8574.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#ifndef __CHRG_PCF8574_H__
|
||||||
|
#define __CHRG_PCF8574_H__
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
#include "chrg_sink.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
#ifndef __CHRG_SINK_H__
|
||||||
|
#define __CHRG_SINK_H__
|
||||||
|
|
||||||
|
#include <rtthread.h>
|
||||||
|
|
||||||
|
#define SINK_ID 0x01
|
||||||
|
|
||||||
|
#define SINK_REG_GET_VOLTAGE 0x20 // 读取变电压板电压
|
||||||
|
#define SINK_REG_GET_PD 0x13 // 读取源端的PD协议数据
|
||||||
|
#define SINK_REG_SET_CC 0x17 // 设置CC线
|
||||||
|
#define SINK_REG_SET_LEVEL 0x16 // 设置CC线电平
|
||||||
|
|
||||||
|
// 设置快充协议
|
||||||
|
#define SINK_REG_SET_QC2 0xF8 // QC2.0
|
||||||
|
#define SINK_REG_SET_QC3 0xF6 // QC3.0
|
||||||
|
#define SINK_REG_SET_FCP 0xF2 // FCP
|
||||||
|
#define SINK_REG_SET_AFC 0xF9 // AFC
|
||||||
|
#define SINK_REG_SET_SCP 0xF3 // SCP
|
||||||
|
#define SINK_REG_SET_VIVO 0xFD // VIVO
|
||||||
|
#define SINK_REG_SET_TFC 0xF7 // TFC 传音
|
||||||
|
#define SINK_REG_SET_PD0 0xFB // PD0 手动/自动
|
||||||
|
#define SINK_REG_SET_PPS 0xFC // PPS 手动/自动
|
||||||
|
#define SINK_REG_SET_PD3P1 0xE1 // PD3.1
|
||||||
|
#define SINK_REG_SET_UFCS 0xE0 // UFCS
|
||||||
|
#define SINK_REG_SET_VOOC 0xE2 // VOOC
|
||||||
|
#define SINK_REG_SET_AVS 0xE3 // AVS
|
||||||
|
|
||||||
|
|
||||||
|
struct chrg_sink_t {
|
||||||
|
rt_uint8_t type;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
#include "chrg_source.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#ifndef __CHRG_SOURCE_H__
|
||||||
|
#define __CHRG_SOURCE_H__
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
|
||||||
|
#include <rtthread.h>
|
||||||
|
|
||||||
|
#include "chrg_utils.h"
|
||||||
|
|
||||||
|
|
||||||
|
rt_uint8_t _crc8 (rt_uint8_t res, rt_uint8_t data)
|
||||||
|
{
|
||||||
|
rt_uint8_t i = 0, t = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < 8; i++) {
|
||||||
|
t = data^res;
|
||||||
|
if ((t & 0x01) == 0x01) {
|
||||||
|
res = res^0x18;
|
||||||
|
res >>= 1;
|
||||||
|
res |= 0x80;
|
||||||
|
} else {
|
||||||
|
res >>= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
data >>= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
rt_uint8_t calc_crc8 (rt_uint8_t *data, rt_uint8_t length)
|
||||||
|
{
|
||||||
|
rt_uint8_t i = 0, res = 0x55;
|
||||||
|
|
||||||
|
for (i = 0; i < length; i++) {
|
||||||
|
res = _crc8(res, data[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
#ifndef __CHRG_UTILS_H__
|
||||||
|
#define __CHRG_UTILS_H__
|
||||||
|
|
||||||
|
#include <rtthread.h>
|
||||||
|
|
||||||
|
extern rt_uint8_t calc_crc8 (rt_uint8_t *data, rt_uint8_t length);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
+364
-318
File diff suppressed because it is too large
Load Diff
@@ -21,7 +21,6 @@ del *.dep /s
|
|||||||
del JLinkLog.txt /s
|
del JLinkLog.txt /s
|
||||||
|
|
||||||
del *.iex /s
|
del *.iex /s
|
||||||
del *.htm /s
|
|
||||||
del *.map /s
|
del *.map /s
|
||||||
|
|
||||||
del *.dbgconf /s
|
del *.dbgconf /s
|
||||||
|
|||||||
Reference in New Issue
Block a user