for switch
This commit is contained in:
@@ -3,9 +3,12 @@ import os
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
CPPPATH = [cwd]
|
||||
src += Glob('bsp/*.c')
|
||||
|
||||
group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)
|
||||
path = [cwd]
|
||||
path += [cwd + '/bsp']
|
||||
|
||||
group = DefineGroup('Applications', src, depend = [''], CPPPATH = path)
|
||||
|
||||
list = os.listdir(cwd)
|
||||
for item in list:
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#define DEV_NAME_CAN "can1"
|
||||
|
||||
typedef enum {
|
||||
IDX_CAN_1 = 0,
|
||||
IDX_CAN_1 = 0, // 0
|
||||
|
||||
TOTAL_CAN
|
||||
} eIDX_CAN;
|
||||
@@ -3,15 +3,15 @@
|
||||
#include <rtthread.h>
|
||||
#include <rtdevice.h>
|
||||
|
||||
#include "tmr_clk.h"
|
||||
#include "chrg_clk.h"
|
||||
|
||||
struct tmr_clk_t tmrclk = {
|
||||
struct chrg_clk_t chrgclk = {
|
||||
.cnt = 0,
|
||||
};
|
||||
|
||||
static void tmr_clk_callback (void *args)
|
||||
static void chrg_clk_callback (void *args)
|
||||
{
|
||||
struct tmr_clk_t *pCLK = (struct tmr_clk_t *)args;
|
||||
struct chrg_clk_t *pCLK = (struct chrg_clk_t *)args;
|
||||
|
||||
pCLK->cnt++;
|
||||
|
||||
@@ -22,20 +22,20 @@ static void tmr_clk_callback (void *args)
|
||||
//rt_kprintf("\r\n");
|
||||
}
|
||||
|
||||
static int tmr_clk_init (void)
|
||||
static int chrg_clk_init (void)
|
||||
{
|
||||
rt_err_t ret = RT_EOK;
|
||||
rt_timer_t timer_fd;
|
||||
|
||||
timer_fd = rt_timer_create("tmr_clk", tmr_clk_callback,
|
||||
&tmrclk, RT_TICK_PER_SECOND, RT_TIMER_FLAG_PERIODIC);
|
||||
timer_fd = rt_timer_create("clk", chrg_clk_callback,
|
||||
&chrgclk, RT_TICK_PER_SECOND, RT_TIMER_FLAG_PERIODIC);
|
||||
if (timer_fd == RT_NULL) {
|
||||
//rt_kprintf("create tmr_clk.\r\n");
|
||||
//rt_kprintf("create clk.\r\n");
|
||||
return -1;
|
||||
} else {
|
||||
ret = rt_timer_start(timer_fd);
|
||||
if (ret != RT_EOK) {
|
||||
rt_kprintf("start tmr_clk failed.\r\n");
|
||||
rt_kprintf("start clk failed.\r\n");
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -43,6 +43,6 @@ static int tmr_clk_init (void)
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
INIT_APP_EXPORT(tmr_clk_init);
|
||||
INIT_APP_EXPORT(chrg_clk_init);
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#ifndef __CHRG_CLK_H__
|
||||
#define __CHRG_CLK_H__
|
||||
|
||||
|
||||
struct chrg_clk_t {
|
||||
rt_uint32_t cnt;
|
||||
|
||||
};
|
||||
|
||||
extern struct chrg_clk_t chrgclk;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -12,10 +12,10 @@
|
||||
#define DEV_NAME_I2C4 "i2c4"
|
||||
|
||||
typedef enum {
|
||||
IDX_I2C_1 = 0,
|
||||
IDX_I2C_2 = 1,
|
||||
IDX_I2C_3 = 2,
|
||||
IDX_I2C_4 = 3,
|
||||
IDX_I2C_1 = 0, // 0
|
||||
IDX_I2C_2, // 1
|
||||
IDX_I2C_3, // 2
|
||||
IDX_I2C_4, // 3
|
||||
|
||||
TOTAL_I2C
|
||||
} eIDX_I2C;
|
||||
@@ -19,11 +19,11 @@
|
||||
#define PIN_INTR_KEY GET_PIN(A, 0) //GET_PIN(B, 6)
|
||||
|
||||
typedef enum {
|
||||
IDX_INTR_I2C1 = 0,
|
||||
IDX_INTR_I2C2 = 1,
|
||||
IDX_INTR_I2C3 = 2,
|
||||
IDX_INTR_I2C4 = 3,
|
||||
IDX_INTR_KEY = 4,
|
||||
IDX_INTR_I2C1 = 0, // 0
|
||||
IDX_INTR_I2C2, // 1
|
||||
IDX_INTR_I2C3, // 2
|
||||
IDX_INTR_I2C4, // 3
|
||||
IDX_INTR_KEY, // 4
|
||||
|
||||
TOTAL_INTR
|
||||
} eIDX_INTR;
|
||||
@@ -1,8 +1,8 @@
|
||||
|
||||
#include <rtthread.h>
|
||||
#include "tmr_pin.h"
|
||||
#include "chrg_pin.h"
|
||||
|
||||
struct tmr_pin_t tmrpins[TOTAL_PINS] = {
|
||||
struct chrg_pin_t chrgpins[TOTAL_PINS] = {
|
||||
[IDX_PIN_LED1] = {
|
||||
.index = IDX_PIN_LED1,
|
||||
.pin_name = PIN_NAME_LED1,
|
||||
@@ -47,19 +47,19 @@ struct tmr_pin_t tmrpins[TOTAL_PINS] = {
|
||||
}*/
|
||||
};
|
||||
|
||||
rt_int32_t tmr_pin_get (ePIN_IDX index)
|
||||
rt_int32_t chrg_pin_get (eIDX_PIN index)
|
||||
{
|
||||
if (index >= TOTAL_PINS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct tmr_pin_t *pPIN = &tmrpins[index];
|
||||
struct chrg_pin_t *pPIN = &chrgpins[index];
|
||||
pPIN->pin_value = rt_pin_read(pPIN->pin_base);
|
||||
|
||||
return pPIN->pin_value;
|
||||
}
|
||||
|
||||
rt_int32_t tmr_pin_set (struct tmr_pin_t *pPIN, rt_uint8_t value)
|
||||
rt_int32_t chrg_pin_set (struct chrg_pin_t *pPIN, rt_uint8_t value)
|
||||
{
|
||||
pPIN->pin_value = value;
|
||||
rt_pin_write(pPIN->pin_base, pPIN->pin_value);
|
||||
@@ -67,13 +67,13 @@ rt_int32_t tmr_pin_set (struct tmr_pin_t *pPIN, rt_uint8_t value)
|
||||
return 0;
|
||||
}
|
||||
|
||||
rt_int32_t tmr_pin_toggle (ePIN_IDX index)
|
||||
rt_int32_t chrg_pin_toggle (eIDX_PIN index)
|
||||
{
|
||||
if (index >= TOTAL_PINS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct tmr_pin_t *pPIN = &tmrpins[index];
|
||||
struct chrg_pin_t *pPIN = &chrgpins[index];
|
||||
pPIN->pin_value = !pPIN->pin_value;
|
||||
|
||||
rt_pin_write(pPIN->pin_base, pPIN->pin_value);
|
||||
@@ -81,36 +81,36 @@ rt_int32_t tmr_pin_toggle (ePIN_IDX index)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static rt_int32_t tmr_pin_timer_set_on (struct tmr_pin_t *pPIN)
|
||||
static rt_int32_t chrg_pin_timer_set_on (struct chrg_pin_t *pPIN)
|
||||
{
|
||||
return rt_timer_control(pPIN->tmr_fd, RT_TIMER_CTRL_SET_TIME, (void *)&pPIN->tmr_millis_on);
|
||||
}
|
||||
|
||||
static rt_int32_t tmr_pin_timer_set_off (struct tmr_pin_t *pPIN)
|
||||
static rt_int32_t chrg_pin_timer_set_off (struct chrg_pin_t *pPIN)
|
||||
{
|
||||
return rt_timer_control(pPIN->tmr_fd, RT_TIMER_CTRL_SET_TIME, (void *)&pPIN->tmr_millis_off);
|
||||
}
|
||||
|
||||
rt_int32_t tmr_pin_pulsing (struct tmr_pin_t *pPIN, rt_uint8_t state)
|
||||
rt_int32_t chrg_pin_pulsing (struct chrg_pin_t *pPIN, rt_uint8_t state)
|
||||
{
|
||||
rt_int32_t ret = 0;
|
||||
|
||||
if (state == PULSE_OFF) {
|
||||
pPIN->tmr_stage = PIN_STAGE_IDLE;
|
||||
tmr_pin_set(pPIN, PIN_HIGH);
|
||||
chrg_pin_set(pPIN, PIN_HIGH);
|
||||
} else {
|
||||
if (pPIN->tmr_millis_on == HOLD_ZERO) { // 常低
|
||||
pPIN->tmr_stage = PIN_STAGE_IDLE;
|
||||
rt_timer_stop(pPIN->tmr_fd);
|
||||
tmr_pin_set(pPIN, PIN_HIGH);
|
||||
chrg_pin_set(pPIN, PIN_HIGH);
|
||||
} else if (pPIN->tmr_millis_off == HOLD_ZERO) { // 常高
|
||||
pPIN->tmr_stage = PIN_STAGE_IDLE;
|
||||
tmr_pin_set(pPIN, PIN_LOW);
|
||||
chrg_pin_set(pPIN, PIN_LOW);
|
||||
} else { // 交替
|
||||
if (pPIN->tmr_stage == PIN_STAGE_IDLE) {
|
||||
pPIN->tmr_stage = PIN_STAGE_ON;
|
||||
tmr_pin_set(pPIN, PIN_LOW);
|
||||
tmr_pin_timer_set_on(pPIN);
|
||||
chrg_pin_set(pPIN, PIN_LOW);
|
||||
chrg_pin_timer_set_on(pPIN);
|
||||
ret = rt_timer_start(pPIN->tmr_fd);
|
||||
}
|
||||
}
|
||||
@@ -119,23 +119,23 @@ rt_int32_t tmr_pin_pulsing (struct tmr_pin_t *pPIN, rt_uint8_t state)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void tmr_pin_timer_timeout_callback (void* parameter)
|
||||
static void chrg_pin_timer_timeout_callback (void* parameter)
|
||||
{
|
||||
struct tmr_pin_t *pPIN = (struct tmr_pin_t *)parameter;
|
||||
struct chrg_pin_t *pPIN = (struct chrg_pin_t *)parameter;
|
||||
|
||||
if (pPIN->tmr_stage == PIN_STAGE_ON) {
|
||||
pPIN->tmr_stage = PIN_STAGE_OFF;
|
||||
|
||||
tmr_pin_set(pPIN, PIN_HIGH);
|
||||
tmr_pin_timer_set_off(pPIN);
|
||||
chrg_pin_set(pPIN, PIN_HIGH);
|
||||
chrg_pin_timer_set_off(pPIN);
|
||||
rt_timer_start(pPIN->tmr_fd);
|
||||
} else if (pPIN->tmr_stage == PIN_STAGE_OFF) {
|
||||
pPIN->tmr_stage = PIN_STAGE_IDLE;
|
||||
|
||||
if ((pPIN->tmr_times == TIMES_ALWAYS)&&(pPIN->tmr_millis_off != HOLD_ZERO)) { // 保持闪烁
|
||||
pPIN->tmr_stage = PIN_STAGE_ON;
|
||||
tmr_pin_set(pPIN, PIN_LOW);
|
||||
tmr_pin_timer_set_on(pPIN);
|
||||
chrg_pin_set(pPIN, PIN_LOW);
|
||||
chrg_pin_timer_set_on(pPIN);
|
||||
rt_timer_start(pPIN->tmr_fd);
|
||||
} else { // 计数闪烁
|
||||
if (++pPIN->tmr_cnt >= pPIN->tmr_times) {
|
||||
@@ -143,25 +143,25 @@ static void tmr_pin_timer_timeout_callback (void* parameter)
|
||||
rt_timer_stop(pPIN->tmr_fd);
|
||||
} else {
|
||||
pPIN->tmr_stage = PIN_STAGE_ON;
|
||||
tmr_pin_set(pPIN, PIN_LOW);
|
||||
tmr_pin_timer_set_on(pPIN);
|
||||
chrg_pin_set(pPIN, PIN_LOW);
|
||||
chrg_pin_timer_set_on(pPIN);
|
||||
rt_timer_start(pPIN->tmr_fd);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static rt_int32_t tmr_pin_timer_start (ePIN_IDX index)
|
||||
static rt_int32_t chrg_pin_timer_start (eIDX_PIN index)
|
||||
{
|
||||
if (index >= TOTAL_PINS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct tmr_pin_t *pPIN = RT_NULL;
|
||||
struct chrg_pin_t *pPIN = RT_NULL;
|
||||
|
||||
pPIN = &tmrpins[index];
|
||||
pPIN = &chrgpins[index];
|
||||
|
||||
pPIN->tmr_fd = rt_timer_create(pPIN->tmr_name, tmr_pin_timer_timeout_callback,
|
||||
pPIN->tmr_fd = rt_timer_create(pPIN->tmr_name, chrg_pin_timer_timeout_callback,
|
||||
pPIN, pPIN->tmr_millis_on, RT_TIMER_FLAG_ONE_SHOT);
|
||||
|
||||
if (pPIN->tmr_fd == RT_NULL) {
|
||||
@@ -172,16 +172,16 @@ static rt_int32_t tmr_pin_timer_start (ePIN_IDX index)
|
||||
return 0;
|
||||
}
|
||||
|
||||
rt_int32_t tmr_pin_timer_delete (ePIN_IDX index)
|
||||
rt_int32_t chrg_pin_timer_delete (eIDX_PIN index)
|
||||
{
|
||||
if (index >= TOTAL_PINS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return rt_timer_delete(tmrpins[index].tmr_fd);
|
||||
return rt_timer_delete(chrgpins[index].tmr_fd);
|
||||
}
|
||||
|
||||
static rt_int32_t tmr_pin_show (struct tmr_pin_t *pPIN, rt_uint32_t times, rt_uint32_t on, rt_uint32_t off)
|
||||
static rt_int32_t chrg_pin_show (struct chrg_pin_t *pPIN, rt_uint32_t times, rt_uint32_t on, rt_uint32_t off)
|
||||
{
|
||||
rt_int32_t ret = 0;
|
||||
|
||||
@@ -191,34 +191,34 @@ static rt_int32_t tmr_pin_show (struct tmr_pin_t *pPIN, rt_uint32_t times, rt_ui
|
||||
pPIN->tmr_cnt = 0;
|
||||
|
||||
if (pPIN->tmr_millis_on == HOLD_ZERO) {
|
||||
ret = tmr_pin_pulsing(pPIN, PULSE_OFF);
|
||||
ret = chrg_pin_pulsing(pPIN, PULSE_OFF);
|
||||
} else {
|
||||
ret = tmr_pin_pulsing(pPIN, PULSE_ON);
|
||||
ret = chrg_pin_pulsing(pPIN, PULSE_ON);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
rt_int32_t tmr_led_flashing (ePIN_IDX index, rt_uint32_t times, rt_uint32_t on, rt_uint32_t off)
|
||||
rt_int32_t chrg_led_flashing (eIDX_PIN index, rt_uint32_t times, rt_uint32_t on, rt_uint32_t off)
|
||||
{
|
||||
rt_int32_t ret = -1;
|
||||
struct tmr_pin_t *pPIN = NULL;
|
||||
struct chrg_pin_t *pPIN = NULL;
|
||||
|
||||
if (index < TOTAL_PINS) {
|
||||
pPIN = &tmrpins[index];
|
||||
ret = tmr_pin_show(pPIN, times, on, off);
|
||||
pPIN = &chrgpins[index];
|
||||
ret = chrg_pin_show(pPIN, times, on, off);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int tmr_pins_init (void)
|
||||
static int chrg_pins_init (void)
|
||||
{
|
||||
rt_uint8_t i = 0;
|
||||
struct tmr_pin_t *pPIN = RT_NULL;
|
||||
struct chrg_pin_t *pPIN = RT_NULL;
|
||||
|
||||
for (i = 0; i < TOTAL_PINS; i++) {
|
||||
pPIN = &tmrpins[i];
|
||||
pPIN = &chrgpins[i];
|
||||
|
||||
rt_pin_mode(pPIN->pin_base, pPIN->pin_mode);
|
||||
|
||||
@@ -227,15 +227,15 @@ static int tmr_pins_init (void)
|
||||
rt_pin_write(pPIN->pin_base, pPIN->pin_value);
|
||||
}
|
||||
|
||||
tmr_pin_timer_start((ePIN_IDX)i);
|
||||
chrg_pin_timer_start((eIDX_PIN)i);
|
||||
}
|
||||
|
||||
tmr_led_flashing(IDX_PIN_LED1, TIMES_ALWAYS, PULSE_TIME*8, PULSE_TIME*8);
|
||||
chrg_led_flashing(IDX_PIN_LED1, TIMES_ALWAYS, PULSE_TIME*8, PULSE_TIME*8);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
INIT_ENV_EXPORT(tmr_pins_init);
|
||||
INIT_ENV_EXPORT(chrg_pins_init);
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef __PIN_TMR_H__
|
||||
#define __PIN_TMR_H__
|
||||
#ifndef __CHRG_PIN_H__
|
||||
#define __CHRG_PIN_H__
|
||||
|
||||
#include <rttypes.h>
|
||||
#include <rtdef.h>
|
||||
@@ -34,7 +34,7 @@ typedef enum {
|
||||
// IDX_PIN_LED2 = 1, // LED2
|
||||
// IDX_PIN_LED3 = 2, // LED3
|
||||
TOTAL_PINS
|
||||
} ePIN_IDX;
|
||||
} eIDX_PIN;
|
||||
|
||||
typedef enum {
|
||||
PIN_STAGE_IDLE = (0x00), // 空闲
|
||||
@@ -44,7 +44,7 @@ typedef enum {
|
||||
PIN_STAGE_END
|
||||
} ePIN_STAGE;
|
||||
|
||||
struct tmr_pin_t {
|
||||
struct chrg_pin_t {
|
||||
rt_uint8_t index; // 引脚索引
|
||||
char *pin_name; // 引脚名
|
||||
rt_int32_t pin_base; // 引脚映射值
|
||||
@@ -60,15 +60,15 @@ struct tmr_pin_t {
|
||||
rt_uint32_t tmr_cnt; // 定时器已执行周期次数
|
||||
};
|
||||
|
||||
extern struct tmr_pin_t tmrpins[TOTAL_PINS];
|
||||
extern struct chrg_pin_t tmrpins[TOTAL_PINS];
|
||||
|
||||
extern rt_int32_t tmr_pin_set (struct tmr_pin_t *pPIN, rt_uint8_t value);
|
||||
extern rt_int32_t chrg_pin_set (struct chrg_pin_t *pPIN, rt_uint8_t value);
|
||||
|
||||
extern rt_int32_t tmr_pin_toggle (ePIN_IDX index);
|
||||
extern rt_int32_t chrg_pin_toggle (eIDX_PIN index);
|
||||
|
||||
extern rt_int32_t tmr_pin_pulsing (struct tmr_pin_t *pPIN, rt_uint8_t state);
|
||||
extern rt_int32_t chrg_pin_pulsing (struct chrg_pin_t *pPIN, rt_uint8_t state);
|
||||
|
||||
extern rt_int32_t tmr_led_flashing (ePIN_IDX index, rt_uint32_t times, rt_uint32_t on, rt_uint32_t off);
|
||||
extern rt_int32_t chrg_led_flashing (eIDX_PIN index, rt_uint32_t times, rt_uint32_t on, rt_uint32_t off);
|
||||
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,128 @@
|
||||
|
||||
#include "chrg_switch.h"
|
||||
|
||||
int chrg_switch_ch (rt_base_t inA, rt_base_t inB, eIDX_CH ch)
|
||||
{
|
||||
rt_uint8_t a,b;
|
||||
|
||||
switch (ch) {
|
||||
case IDX_CH_0:
|
||||
a = PIN_LOW;
|
||||
b = PIN_LOW;
|
||||
break;
|
||||
|
||||
case IDX_CH_1:
|
||||
a = PIN_LOW;
|
||||
b = PIN_HIGH;
|
||||
break;
|
||||
|
||||
case IDX_CH_2:
|
||||
a = PIN_HIGH;
|
||||
b = PIN_LOW;
|
||||
break;
|
||||
|
||||
case IDX_CH_3:
|
||||
a = PIN_HIGH;
|
||||
b = PIN_HIGH;
|
||||
break;
|
||||
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
rt_pin_write(inA, a);
|
||||
rt_pin_write(inB, b);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 北向通道选择
|
||||
int chrg_switch_north (eIDX_CH ch)
|
||||
{
|
||||
if (ch >= TOTAL_CHS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return chrg_switch_ch(PIN_SW_NORTH_A, PIN_SW_NORTH_B, ch);
|
||||
}
|
||||
|
||||
static int chrg_switch_north_pins_init (void)
|
||||
{
|
||||
rt_pin_mode(PIN_SW_NORTH_A, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_NORTH_B, PIN_MODE_OUTPUT);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int chrg_switch_south_lv1 (eIDX_CH ch)
|
||||
{
|
||||
if (ch >= 2) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return chrg_switch_ch(PIN_SW_SOUTH_LV1_A, PIN_SW_SOUTH_LV1_B, ch);
|
||||
}
|
||||
|
||||
int chrg_switch_south_lv2_1 (eIDX_CH ch)
|
||||
{
|
||||
if (ch >= TOTAL_CHS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return chrg_switch_ch(PIN_SW_SOUTH_LV2_A1, PIN_SW_SOUTH_LV2_B1, ch);
|
||||
}
|
||||
|
||||
int chrg_switch_south_lv2_2 (eIDX_CH ch)
|
||||
{
|
||||
if (ch >= TOTAL_CHS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return chrg_switch_ch(PIN_SW_SOUTH_LV2_A2, PIN_SW_SOUTH_LV2_B2, ch);
|
||||
}
|
||||
|
||||
// 南向通道选择
|
||||
int chrg_switch_south (eIDX_SOUTH_CH ch)
|
||||
{
|
||||
if (ch >= TOTAL_SOUTH_CHS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ch < IDX_SOUTH_4) {
|
||||
chrg_switch_south_lv1(IDX_CH_0);
|
||||
chrg_switch_south_lv2_1((eIDX_CH)ch);
|
||||
} else {
|
||||
chrg_switch_south_lv1(IDX_CH_1);
|
||||
chrg_switch_south_lv2_2((eIDX_CH)(ch-IDX_SOUTH_4));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int chrg_switch_south_pins_init (void)
|
||||
{
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV1_A, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV1_B, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV2_A1, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV2_B1, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV2_A2, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV2_B2, PIN_MODE_OUTPUT);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int chrg_switch_init (void)
|
||||
{
|
||||
chrg_switch_north_pins_init();
|
||||
chrg_switch_south_pins_init();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
INIT_ENV_EXPORT(chrg_switch_init);
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
#ifndef __CHRG_SWITCH_H__
|
||||
#define __CHRG_SWITCH_H__
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <rtdevice.h>
|
||||
#include "drv_gpio.h"
|
||||
|
||||
// 4路选通
|
||||
typedef enum {
|
||||
// U14 U23 U24 U25
|
||||
// ----------------
|
||||
IDX_CH_0 = 0, // J3 U24 J12 J16
|
||||
IDX_CH_1, // J4 U25 J13 J17
|
||||
IDX_CH_2, // J9 - J14 J18
|
||||
IDX_CH_3, // J10 - J15 J19
|
||||
|
||||
TOTAL_CHS
|
||||
} eIDX_CH;
|
||||
|
||||
// 南向选择 组合
|
||||
typedef enum {
|
||||
IDX_SOUTH_0 = 0, // U24_J12
|
||||
IDX_SOUTH_1, // U24_J13
|
||||
IDX_SOUTH_2, // U24_J14
|
||||
IDX_SOUTH_3, // U24_J15
|
||||
IDX_SOUTH_4, // U25_J16
|
||||
IDX_SOUTH_5, // U25_J17
|
||||
IDX_SOUTH_6, // U25_J18
|
||||
IDX_SOUTH_7, // U25_J19
|
||||
|
||||
TOTAL_SOUTH_CHS
|
||||
} eIDX_SOUTH_CH;
|
||||
|
||||
|
||||
// U14 switch
|
||||
#define PIN_SW_NORTH_A GET_PIN(B, 0)
|
||||
#define PIN_SW_NORTH_B GET_PIN(B, 1)
|
||||
|
||||
// U23 switch
|
||||
#define PIN_SW_SOUTH_LV1_A GET_PIN(C, 8)
|
||||
#define PIN_SW_SOUTH_LV1_B GET_PIN(C, 9)
|
||||
|
||||
// U24 switch
|
||||
#define PIN_SW_SOUTH_LV2_A1 GET_PIN(A, 15)
|
||||
#define PIN_SW_SOUTH_LV2_B1 GET_PIN(C, 10)
|
||||
|
||||
// U25 switch
|
||||
#define PIN_SW_SOUTH_LV2_A2 GET_PIN(C, 11)
|
||||
#define PIN_SW_SOUTH_LV2_B2 GET_PIN(C, 12)
|
||||
|
||||
|
||||
// 北向通道选择
|
||||
extern int chrg_switch_north (eIDX_CH ch);
|
||||
|
||||
// 南向通道选择
|
||||
extern int chrg_switch_south (eIDX_SOUTH_CH ch);
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -10,10 +10,10 @@
|
||||
#define DEV_NAME_SOUTH "uart6"
|
||||
|
||||
typedef enum {
|
||||
IDX_TTY_RS485 = 0,
|
||||
IDX_TTY_LCD = 1,
|
||||
IDX_TTY_NORTH = 2,
|
||||
IDX_TTY_SOUTH = 3,
|
||||
IDX_TTY_RS485 = 0, // 0
|
||||
IDX_TTY_LCD, // 1
|
||||
IDX_TTY_NORTH, // 2
|
||||
IDX_TTY_SOUTH, // 3
|
||||
|
||||
TOTAL_TTY
|
||||
} eIDX_TTY;
|
||||
@@ -1,11 +1,11 @@
|
||||
|
||||
#include <rtthread.h>
|
||||
|
||||
#include <board.h>
|
||||
#include <drv_gpio.h>
|
||||
|
||||
#include "shell.h"
|
||||
#include <board.h>
|
||||
#include <rtthread.h>
|
||||
#include <drv_gpio.h>
|
||||
#ifndef RT_USING_NANO
|
||||
#include <rtdevice.h>
|
||||
#endif /* RT_USING_NANO */
|
||||
#include "main.h"
|
||||
|
||||
void show_app_version (void)
|
||||
{
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
#ifndef __MAIN_H__
|
||||
#define __MAIN_H__
|
||||
|
||||
#include <rtthread.h>
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
|
||||
|
||||
#include "switch_north.h"
|
||||
|
||||
int switch_north_channel(eIDX_SW_NOR idx)
|
||||
{
|
||||
if (idx >= TOTAL_SW_NOR) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch(idx) {
|
||||
case IDX_SW_NOR_0:
|
||||
rt_pin_write(PIN_SW_NORTH_A, PIN_LOW);
|
||||
rt_pin_write(PIN_SW_NORTH_B, PIN_LOW);
|
||||
break;
|
||||
case IDX_SW_NOR_1:
|
||||
rt_pin_write(PIN_SW_NORTH_A, PIN_LOW);
|
||||
rt_pin_write(PIN_SW_NORTH_B, PIN_HIGH);
|
||||
break;
|
||||
case IDX_SW_NOR_2:
|
||||
rt_pin_write(PIN_SW_NORTH_A, PIN_HIGH);
|
||||
rt_pin_write(PIN_SW_NORTH_B, PIN_LOW);
|
||||
break;
|
||||
case IDX_SW_NOR_3:
|
||||
rt_pin_write(PIN_SW_NORTH_A, PIN_HIGH);
|
||||
rt_pin_write(PIN_SW_NORTH_B, PIN_HIGH);
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int switch_north_pins_init (void)
|
||||
{
|
||||
rt_pin_mode(PIN_SW_NORTH_A, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_NORTH_B, PIN_MODE_OUTPUT);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
INIT_ENV_EXPORT(switch_north_pins_init);
|
||||
|
||||
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
#ifndef __SWITCH_NORTH_H__
|
||||
#define __SWITCH_NORTH_H__
|
||||
|
||||
#include "drv_gpio.h"
|
||||
|
||||
// U14 switch
|
||||
#define PIN_SW_NORTH_A GET_PIN(B, 0)
|
||||
#define PIN_SW_NORTH_B GET_PIN(B, 1)
|
||||
|
||||
typedef enum {
|
||||
IDX_SW_NOR_0 = 0, // to J3
|
||||
IDX_SW_NOR_1 = 1, // to J4
|
||||
IDX_SW_NOR_2 = 2, // to J9
|
||||
IDX_SW_NOR_3 = 3, // to J10
|
||||
|
||||
TOTAL_SW_NOR
|
||||
} eIDX_SW_NOR;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
|
||||
|
||||
#include "switch_south.h"
|
||||
|
||||
int switch_south_lv1_channel(eIDX_SW_SOU_LV1 idx)
|
||||
{
|
||||
if (idx >= TOTAL_SW_SOU_LV1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch(idx) {
|
||||
case IDX_SW_SOU_LV1_0:
|
||||
rt_pin_write(PIN_SW_SOUTH_LV1_A, PIN_LOW);
|
||||
rt_pin_write(PIN_SW_SOUTH_LV1_B, PIN_LOW);
|
||||
break;
|
||||
case IDX_SW_SOU_LV1_1:
|
||||
rt_pin_write(PIN_SW_SOUTH_LV1_A, PIN_LOW);
|
||||
rt_pin_write(PIN_SW_SOUTH_LV1_B, PIN_HIGH);
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int switch_south_lv2_1_channel(eIDX_SW_SOU_LV2_1 idx)
|
||||
{
|
||||
if (idx >= TOTAL_SW_SOU_LV2_1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch(idx) {
|
||||
case IDX_SW_SOU_LV2_1_0:
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_A1, PIN_LOW);
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_B1, PIN_LOW);
|
||||
break;
|
||||
case IDX_SW_SOU_LV2_1_1:
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_A1, PIN_LOW);
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_B1, PIN_HIGH);
|
||||
break;
|
||||
case IDX_SW_SOU_LV2_1_2:
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_A1, PIN_HIGH);
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_B1, PIN_LOW);
|
||||
break;
|
||||
case IDX_SW_SOU_LV2_1_3:
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_A1, PIN_HIGH);
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_B1, PIN_HIGH);
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int switch_south_lv2_2_channel(eIDX_SW_SOU_LV2_2 idx)
|
||||
{
|
||||
if (idx >= TOTAL_SW_SOU_LV2_2) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch(idx) {
|
||||
case IDX_SW_SOU_LV2_2_0:
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_A2, PIN_LOW);
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_B2, PIN_LOW);
|
||||
break;
|
||||
case IDX_SW_SOU_LV2_2_1:
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_A2, PIN_LOW);
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_B2, PIN_HIGH);
|
||||
break;
|
||||
case IDX_SW_SOU_LV2_2_2:
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_A2, PIN_HIGH);
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_B2, PIN_LOW);
|
||||
break;
|
||||
case IDX_SW_SOU_LV2_2_3:
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_A2, PIN_HIGH);
|
||||
rt_pin_write(PIN_SW_SOUTH_LV2_B2, PIN_HIGH);
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int switch_south_pins_init (void)
|
||||
{
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV1_A, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV1_B, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV2_A1, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV2_B1, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV2_A2, PIN_MODE_OUTPUT);
|
||||
rt_pin_mode(PIN_SW_SOUTH_LV2_B2, PIN_MODE_OUTPUT);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
INIT_ENV_EXPORT(switch_south_pins_init);
|
||||
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
#ifndef __SWITCH_SOUTH_H__
|
||||
#define __SWITCH_SOUTH_H__
|
||||
|
||||
#include "drv_gpio.h"
|
||||
|
||||
// U23 switch
|
||||
#define PIN_SW_SOUTH_LV1_A GET_PIN(C, 8)
|
||||
#define PIN_SW_SOUTH_LV1_B GET_PIN(C, 9)
|
||||
|
||||
typedef enum {
|
||||
IDX_SW_SOU_LV1_0 = 0, // to U24
|
||||
IDX_SW_SOU_LV1_1 = 1, // to U25
|
||||
|
||||
TOTAL_SW_SOU_LV1
|
||||
} eIDX_SW_SOU_LV1;
|
||||
|
||||
// U24 switch
|
||||
#define PIN_SW_SOUTH_LV2_A1 GET_PIN(A, 15)
|
||||
#define PIN_SW_SOUTH_LV2_B1 GET_PIN(C, 10)
|
||||
|
||||
typedef enum {
|
||||
IDX_SW_SOU_LV2_1_0 = 0, // to J12
|
||||
IDX_SW_SOU_LV2_1_1 = 1, // to J13
|
||||
IDX_SW_SOU_LV2_1_2 = 2, // to J14
|
||||
IDX_SW_SOU_LV2_1_3 = 3, // to J15
|
||||
|
||||
TOTAL_SW_SOU_LV2_1
|
||||
} eIDX_SW_SOU_LV2_1;
|
||||
|
||||
// U25 switch
|
||||
#define PIN_SW_SOUTH_LV2_A2 GET_PIN(C, 11)
|
||||
#define PIN_SW_SOUTH_LV2_B2 GET_PIN(C, 12)
|
||||
|
||||
typedef enum {
|
||||
IDX_SW_SOU_LV2_2_0 = 0, // to J16
|
||||
IDX_SW_SOU_LV2_2_1 = 1, // to J17
|
||||
IDX_SW_SOU_LV2_2_2 = 2, // to J18
|
||||
IDX_SW_SOU_LV2_2_3 = 3, // to J19
|
||||
|
||||
TOTAL_SW_SOU_LV2_2
|
||||
} eIDX_SW_SOU_LV2_2;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
#ifndef __TMR_CLK_H__
|
||||
#define __TMR_CLK_H__
|
||||
|
||||
|
||||
struct tmr_clk_t {
|
||||
rt_uint32_t cnt;
|
||||
|
||||
};
|
||||
|
||||
extern struct tmr_clk_t tmrclk;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
+201
-206
@@ -337,9 +337,9 @@
|
||||
<v6Rtti>0</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define>RT_USING_ARMLIBC, STM32F405xx, USE_HAL_DRIVER, __STDC_LIMIT_MACROS, __CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, RT_USING_LIBC</Define>
|
||||
<Define>__CLK_TCK=RT_TICK_PER_SECOND, __RTTHREAD__, USE_HAL_DRIVER, __STDC_LIMIT_MACROS, STM32F405xx, RT_USING_LIBC, RT_USING_ARMLIBC</Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>..\..\rt-thread\components\libc\posix\io\epoll;..\..\rt-thread\components\drivers\phy;applications;board\CubeMX_Config\Inc;..\..\libs\stm32f4\STM32F4_HAL\Inc\Legacy;..\..\rt-thread\components\finsh;..\..\rt-thread\components\libc\posix\ipc;..\..\rt-thread\components\drivers\smp_call;..\..\libs\freemodbus\modbus\rtu;..\..\rt-thread\components\drivers\include;..\..\rt-thread\components\drivers\include;..\..\rt-thread\components\libc\compilers\common\extension;..\..\rt-thread\components\drivers\include;board;..\..\rt-thread\components\drivers\include;..\..\libs\freemodbus\modbus\tcp;..\..\rt-thread\bsp\stm32\libraries\HAL_Drivers;..\..\libs\stm32f4\STM32F4_CMSIS\Include;..\..\rt-thread\components\libc\posix\io\poll;..\..\rt-thread\components\drivers\include;..\..\rt-thread\include;..\..\libs\freemodbus\modbus\include;..\..\rt-thread\bsp\stm32\libraries\HAL_Drivers\drivers\config;.;..\..\libs\stm32f4\STM32F4_HAL\Inc;..\..\rt-thread\components\libc\compilers\common\extension\fcntl\octal;..\..\rt-thread\libcpu\arm\common;..\..\libs\freemodbus\port;..\..\libs\cmsis-core\Include;..\..\rt-thread\components\drivers\include;..\..\rt-thread\components\libc\posix\io\eventfd;..\..\libs\freemodbus\modbus\ascii;..\..\rt-thread\components\drivers\include;..\..\rt-thread\libcpu\arm\cortex-m4;..\..\rt-thread\components\libc\compilers\common\include;..\..\rt-thread\bsp\stm32\libraries\HAL_Drivers\drivers</IncludePath>
|
||||
<IncludePath>..\..\libs\stm32f4\STM32F4_HAL\Inc\Legacy;..\..\rt-thread\components\drivers\include;..\..\rt-thread\components\drivers\include;..\..\libs\freemodbus\modbus\tcp;..\..\rt-thread\libcpu\arm\cortex-m4;board\CubeMX_Config\Inc;.;..\..\libs\freemodbus\modbus\include;..\..\rt-thread\components\libc\posix\io\eventfd;..\..\rt-thread\components\drivers\include;..\..\libs\cmsis-core\Include;..\..\rt-thread\components\libc\posix\io\epoll;..\..\rt-thread\components\libc\posix\ipc;..\..\rt-thread\components\libc\posix\io\poll;..\..\rt-thread\include;..\..\rt-thread\components\drivers\include;..\..\rt-thread\components\drivers\include;..\..\rt-thread\components\drivers\include;..\..\libs\freemodbus\port;..\..\rt-thread\bsp\stm32\libraries\HAL_Drivers\drivers;..\..\rt-thread\bsp\stm32\libraries\HAL_Drivers\drivers\config;..\..\rt-thread\components\libc\compilers\common\extension;..\..\rt-thread\components\finsh;..\..\libs\freemodbus\modbus\rtu;..\..\rt-thread\components\drivers\phy;..\..\rt-thread\components\drivers\include;board;..\..\libs\stm32f4\STM32F4_HAL\Inc;..\..\rt-thread\components\libc\compilers\common\extension\fcntl\octal;..\..\rt-thread\components\drivers\smp_call;applications;..\..\libs\freemodbus\modbus\ascii;..\..\rt-thread\bsp\stm32\libraries\HAL_Drivers;applications\bsp;..\..\rt-thread\libcpu\arm\common;..\..\rt-thread\components\libc\compilers\common\include;..\..\libs\stm32f4\STM32F4_CMSIS\Include</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
@@ -384,49 +384,44 @@
|
||||
<GroupName>Applications</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>switch_south.c</FileName>
|
||||
<FileName>chrg_pin.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\switch_south.c</FilePath>
|
||||
<FilePath>applications\bsp\chrg_pin.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>chrg_switch.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\bsp\chrg_switch.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>chrg_intr.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\bsp\chrg_intr.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>chrg_i2c.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\chrg_i2c.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tmr_clk.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\tmr_clk.c</FilePath>
|
||||
<FilePath>applications\bsp\chrg_i2c.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>main.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\main.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>switch_north.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\switch_north.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tmr_pin.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\tmr_pin.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>chrg_intr.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\chrg_intr.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>chrg_tty.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\chrg_tty.c</FilePath>
|
||||
<FilePath>applications\bsp\chrg_tty.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>chrg_clk.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\bsp\chrg_clk.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>chrg_can.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>applications\chrg_can.c</FilePath>
|
||||
<FilePath>applications\bsp\chrg_can.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
@@ -1419,16 +1414,6 @@
|
||||
<Group>
|
||||
<GroupName>Finsh</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>msh.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\components\finsh\msh.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>shell.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\components\finsh\shell.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>cmd.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@@ -1439,46 +1424,61 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\components\finsh\msh_parse.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>msh.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\components\finsh\msh.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>shell.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\components\finsh\shell.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>FreeModbus</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>mbcrc.c</FileName>
|
||||
<FileName>sample_mb_master.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\rtu\mbcrc.c</FilePath>
|
||||
<FilePath>..\..\libs\freemodbus\samples\sample_mb_master.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sample_mb_slave.c</FileName>
|
||||
<FileName>mbfuncinput.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\samples\sample_mb_slave.c</FilePath>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncinput.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbutils.c</FileName>
|
||||
<FileName>mbrtu.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbutils.c</FilePath>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\rtu\mbrtu.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbrtu_m.c</FileName>
|
||||
<FileName>portevent.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\rtu\mbrtu_m.c</FilePath>
|
||||
<FilePath>..\..\libs\freemodbus\port\portevent.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>porttcp.c</FileName>
|
||||
<FileName>user_mb_app.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\porttcp.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfunccoils_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfunccoils_m.c</FilePath>
|
||||
<FilePath>..\..\libs\freemodbus\port\user_mb_app.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncdiag.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncdiag.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>portevent_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\portevent_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfunccoils.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfunccoils.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>porttimer_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@@ -1494,95 +1494,90 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\portserial.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncinput.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncinput.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>user_mb_app_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\user_mb_app_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncinput_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncinput_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncholding.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncholding.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbrtu.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\rtu\mbrtu.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncdisc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncdisc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>portserial_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\portserial_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>user_mb_app.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\user_mb_app.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mb_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\mb_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>portevent_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\portevent_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncother.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncother.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncdisc_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncdisc_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfunccoils.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfunccoils.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sample_mb_master.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\samples\sample_mb_master.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mb.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\mb.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncholding_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncholding_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>porttimer.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\porttimer.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>portevent.c</FileName>
|
||||
<FileName>sample_mb_slave.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\portevent.c</FilePath>
|
||||
<FilePath>..\..\libs\freemodbus\samples\sample_mb_slave.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mb_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\mb_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncholding.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncholding.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbrtu_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\rtu\mbrtu_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncholding_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncholding_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbcrc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\rtu\mbcrc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>user_mb_app_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\user_mb_app_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncother.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncother.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>portserial_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\portserial_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfunccoils_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfunccoils_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbutils.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbutils.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncinput_m.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncinput_m.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mb.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\mb.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mbfuncdisc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\modbus\functions\mbfuncdisc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>porttcp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\freemodbus\port\porttcp.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
@@ -2434,16 +2429,21 @@
|
||||
<Group>
|
||||
<GroupName>klibc</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>kstring.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\src\klibc\kstring.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>kerrno.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\src\klibc\kerrno.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>kstdio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\src\klibc\kstdio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>kstring.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\src\klibc\kstring.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>rt_vsscanf.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@@ -2454,11 +2454,6 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\src\klibc\rt_vsnprintf_tiny.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>kstdio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\rt-thread\src\klibc\kstdio.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
@@ -2494,86 +2489,91 @@
|
||||
<Group>
|
||||
<GroupName>STM32F4-CMSIS</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>system_stm32f4xx.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_CMSIS\Source\Templates\system_stm32f4xx.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>startup_stm32f405xx.s</FileName>
|
||||
<FileType>2</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_CMSIS\Source\Templates\arm\startup_stm32f405xx.s</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>system_stm32f4xx.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_CMSIS\Source\Templates\system_stm32f4xx.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>STM32F4-HAL</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_dma_ex.c</FileName>
|
||||
<FileName>stm32f4xx_hal_cryp_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_dma_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_can.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_can.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_rcc_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_rcc_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_gpio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_cec.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_cec.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_i2c.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_i2c.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_i2c_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_i2c_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_pwr_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_pwr_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_rcc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_rcc.c</FilePath>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_cryp_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_dma.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_dma.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_dma_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_dma_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_pwr.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_pwr.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_i2c_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_i2c_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_cryp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_cryp.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_can.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_can.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_uart.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_pwr_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_pwr_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_rng.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_rng.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_rcc_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_rcc_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_rcc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_rcc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_gpio.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_usart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@@ -2584,26 +2584,21 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_cortex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_cryp_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_cryp_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_rng.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_rng.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_uart.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_crc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_crc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_cec.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_cec.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_i2c.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\..\libs\stm32f4\STM32F4_HAL\Src\stm32f4xx_hal_i2c.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
|
||||
Reference in New Issue
Block a user