mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
update port linux std
fix baseDev.addEventCallBack use setCallBack in std update std support flow control for uart add flowcontrol API for std.uart
This commit is contained in:
parent
90c7ed066d
commit
256319e035
@ -9,7 +9,7 @@ Document: https://pikadoc.readthedocs.io/en/latest/PikaStdDevice%20%E6%A0%87%E5%
|
||||
from PikaObj import *
|
||||
|
||||
|
||||
class GPIO:
|
||||
class GPIO(BaseDev):
|
||||
def __init__(self): ...
|
||||
|
||||
def setPin(self, pinName: str):
|
||||
@ -72,14 +72,14 @@ class GPIO:
|
||||
SIGNAL_FALLING: int
|
||||
SIGNAL_ANY: int
|
||||
|
||||
def addEventCallBack(self, eventCallBack: any, filter: int):
|
||||
def setCallBack(self, eventCallBack: any, filter: int):
|
||||
"""
|
||||
Add a callback function to the pin.
|
||||
Example:
|
||||
``` python
|
||||
def cb1(signal):
|
||||
print("cb1", signal)
|
||||
io.addEventCallBack(cb1, io.SIGNAL_RISING)
|
||||
io.setCallBack(cb1, io.SIGNAL_RISING)
|
||||
```
|
||||
"""
|
||||
|
||||
@ -202,6 +202,14 @@ class UART:
|
||||
|
||||
def setId(self, id: int):
|
||||
"""Set the id of the UART."""
|
||||
|
||||
FLOW_CONTROL_NONE: int
|
||||
FLOW_CONTROL_RTS: int
|
||||
FLOW_CONTROL_CTS: int
|
||||
FLOW_CONTROL_RTS_CTS: int
|
||||
|
||||
def setFlowControl(self, flowControl: int):
|
||||
"""Set the flow control of the UART."""
|
||||
|
||||
def enable(self):
|
||||
"""Enable the UART."""
|
||||
@ -225,14 +233,14 @@ class UART:
|
||||
SIGNAL_RX: int
|
||||
SIGNAL_TX: int
|
||||
|
||||
def addEventCallBack(self, eventCallBack: any, filter: int):
|
||||
def setCallBack(self, eventCallBack: any, filter: int):
|
||||
"""
|
||||
Add a callback function to the pin.
|
||||
Example:
|
||||
``` python
|
||||
def cb1(signal):
|
||||
print(uart.read(-1))
|
||||
io.addEventCallBack(cb1, uart.SIGNAL_RX)
|
||||
io.setCallBack(cb1, uart.SIGNAL_RX)
|
||||
```
|
||||
"""
|
||||
|
||||
|
@ -153,13 +153,13 @@ extern PikaEventListener* g_pika_device_event_listener;
|
||||
|
||||
void _pika_hal_GPIO_event_callback(pika_dev* dev,
|
||||
PIKA_HAL_GPIO_EVENT_SIGNAL signal) {
|
||||
pks_eventLisener_sendSignal(g_pika_device_event_listener, (uint32_t)dev,
|
||||
pks_eventLisener_sendSignal(g_pika_device_event_listener, (uintptr_t)dev,
|
||||
signal);
|
||||
}
|
||||
|
||||
void PikaStdDevice_GPIO_addEventCallBack(PikaObj* self,
|
||||
Arg* eventCallBack,
|
||||
int filter) {
|
||||
void PikaStdDevice_GPIO_setCallBack(PikaObj* self,
|
||||
Arg* eventCallBack,
|
||||
int filter) {
|
||||
pika_dev* dev = _get_dev(self);
|
||||
#if PIKA_EVENT_ENABLE
|
||||
obj_setArg(self, "eventCallBack", eventCallBack);
|
||||
@ -168,7 +168,7 @@ void PikaStdDevice_GPIO_addEventCallBack(PikaObj* self,
|
||||
pks_eventLisener_init(&g_pika_device_event_listener);
|
||||
}
|
||||
/* use the pointer of dev as the event id */
|
||||
uint32_t eventId = (uint32_t)dev;
|
||||
uint32_t eventId = (uintptr_t)dev;
|
||||
/* regist event to event listener */
|
||||
pks_eventLicener_registEvent(g_pika_device_event_listener, eventId, self);
|
||||
|
||||
|
@ -14,6 +14,12 @@ void PikaStdDevice_UART_init(PikaObj* self) {
|
||||
obj_setInt(self, "baudRate", 115200);
|
||||
obj_setInt(self, "id", 1);
|
||||
obj_setStr(self, "readBuff", "");
|
||||
obj_setInt(self, "FLOW_CONTROL_NONE", PIKA_HAL_UART_FLOW_CONTROL_NONE);
|
||||
obj_setInt(self, "FLOW_CONTROL_RTS", PIKA_HAL_UART_FLOW_CONTROL_RTS);
|
||||
obj_setInt(self, "FLOW_CONTROL_CTS", PIKA_HAL_UART_FLOW_CONTROL_CTS);
|
||||
obj_setInt(self, "FLOW_CONTROL_RTS_CTS",
|
||||
PIKA_HAL_UART_FLOW_CONTROL_RTS_CTS);
|
||||
obj_setInt(self, "flowControl", PIKA_HAL_UART_FLOW_CONTROL_NONE);
|
||||
}
|
||||
|
||||
void PikaStdDevice_UART___init__(PikaObj* self) {
|
||||
@ -35,9 +41,15 @@ Arg* PikaStdDevice_UART_readBytes(PikaObj* self, int length) {
|
||||
void PikaStdDevice_UART_setBaudRate(PikaObj* self, int baudRate) {
|
||||
obj_setInt(self, "baudRate", baudRate);
|
||||
}
|
||||
|
||||
void PikaStdDevice_UART_setFlowControl(PikaObj *self, int flowControl){
|
||||
obj_setInt(self, "flowControl", flowControl);
|
||||
}
|
||||
|
||||
void PikaStdDevice_UART_setId(PikaObj* self, int id) {
|
||||
obj_setInt(self, "id", id);
|
||||
}
|
||||
|
||||
void PikaStdDevice_UART_write(PikaObj* self, char* data) {
|
||||
obj_setStr(self, "writeData", data);
|
||||
obj_runNativeMethod(self, "platformWrite", NULL);
|
||||
@ -73,6 +85,7 @@ void PikaStdDevice_UART_platformEnable(PikaObj* self) {
|
||||
}
|
||||
pika_hal_UART_config cfg = {0};
|
||||
cfg.baudrate = obj_getInt(self, "baudRate");
|
||||
cfg.flow_control = obj_getInt(self, "flowControl");
|
||||
pika_hal_ioctl(dev, PIKA_HAL_IOCTL_CONFIG, &cfg);
|
||||
pika_hal_ioctl(dev, PIKA_HAL_IOCTL_ENABLE);
|
||||
}
|
||||
@ -118,6 +131,6 @@ void PikaStdDevice_UART_platformWriteBytes(PikaObj* self) {
|
||||
pika_hal_write(dev, data, len);
|
||||
}
|
||||
|
||||
void PikaStdDevice_UART_addEventCallBack(PikaObj *self, Arg* eventCallBack, int filter){
|
||||
|
||||
}
|
||||
void PikaStdDevice_UART_setCallBack(PikaObj* self,
|
||||
Arg* eventCallBack,
|
||||
int filter) {}
|
||||
|
@ -197,6 +197,7 @@ int pika_hal_UART_ioctl_merge_config(pika_hal_UART_config* dst,
|
||||
_IOCTL_CONFIG_USE_DEFAULT(data_bits, PIKA_HAL_UART_DATA_BITS_8);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(stop_bits, PIKA_HAL_UART_STOP_BITS_1);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(parity, PIKA_HAL_UART_PARITY_NONE);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(flow_control, PIKA_HAL_UART_FLOW_CONTROL_NONE);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(event_callback, NULL);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(event_callback_filter,
|
||||
PIKA_HAL_UART_EVENT_SIGNAL_RX);
|
||||
|
@ -120,11 +120,20 @@ typedef enum {
|
||||
PIKA_HAL_UART_EVENT_SIGNAL_ANY,
|
||||
} PIKA_HAL_UART_EVENT_SIGNAL;
|
||||
|
||||
typedef enum {
|
||||
_PIKA_HAL_UART_FLOW_CONTROL_UNUSED = 0,
|
||||
PIKA_HAL_UART_FLOW_CONTROL_NONE,
|
||||
PIKA_HAL_UART_FLOW_CONTROL_RTS,
|
||||
PIKA_HAL_UART_FLOW_CONTROL_CTS,
|
||||
PIKA_HAL_UART_FLOW_CONTROL_RTS_CTS,
|
||||
} PIKA_HAL_UART_FLOW_CONTROL;
|
||||
|
||||
typedef struct {
|
||||
PIKA_HAL_UART_BAUDRATE baudrate;
|
||||
PIKA_HAL_UART_DATA_BITS data_bits;
|
||||
PIKA_HAL_UART_STOP_BITS stop_bits;
|
||||
PIKA_HAL_UART_PARITY parity;
|
||||
PIKA_HAL_UART_FLOW_CONTROL flow_control;
|
||||
void (*event_callback)(pika_dev* dev, PIKA_HAL_UART_EVENT_SIGNAL signal);
|
||||
PIKA_HAL_UART_EVENT_SIGNAL event_callback_filter;
|
||||
PIKA_HAL_EVENT_CALLBACK_ENA event_callback_ena;
|
||||
|
@ -10,6 +10,7 @@ class GPIO(PikaStdDevice.GPIO):
|
||||
def platformSetMode(self): ...
|
||||
def platformRead(self): ...
|
||||
def platformGetEventId(self): ...
|
||||
def eventTest(self): ...
|
||||
|
||||
|
||||
class Time(PikaStdDevice.Time):
|
||||
|
@ -14,3 +14,15 @@ void TemplateDevice_GPIO_platformGetEventId(PikaObj* self) {
|
||||
obj_setInt(self, "eventId", GPIO_PA8_EVENT_ID);
|
||||
}
|
||||
}
|
||||
|
||||
extern PikaEventListener* g_pika_device_event_listener;
|
||||
#define EVENT_SIGNAL_IO_RISING_EDGE 0x01
|
||||
#define EVENT_SIGNAL_IO_FALLING_EDGE 0x02
|
||||
#define GPIO_PA8_EVENT_ID 0x08
|
||||
|
||||
void TemplateDevice_GPIO_eventTest(PikaObj* self) {
|
||||
pks_eventLisener_sendSignal(g_pika_device_event_listener, GPIO_PA8_EVENT_ID,
|
||||
EVENT_SIGNAL_IO_FALLING_EDGE);
|
||||
pks_eventLisener_sendSignal(g_pika_device_event_listener, GPIO_PA8_EVENT_ID,
|
||||
EVENT_SIGNAL_IO_RISING_EDGE);
|
||||
}
|
||||
|
3
port/linux/.vscode/settings.json
vendored
3
port/linux/.vscode/settings.json
vendored
@ -93,7 +93,8 @@
|
||||
"__instruction_def.h": "c",
|
||||
"pika_hal_def.h": "c",
|
||||
"pika_hal_table.h": "c",
|
||||
"pika_hal_table_rule.h": "c"
|
||||
"pika_hal_table_rule.h": "c",
|
||||
"pikastddevice_uart.h": "c"
|
||||
},
|
||||
"python.formatting.provider": "autopep8",
|
||||
"C_Cpp.errorSquiggles": "Disabled"
|
||||
|
@ -68,6 +68,21 @@ class GPIO(BaseDev):
|
||||
def read(self) -> int:
|
||||
"""Read the pin value."""
|
||||
|
||||
SIGNAL_RISING: int
|
||||
SIGNAL_FALLING: int
|
||||
SIGNAL_ANY: int
|
||||
|
||||
def setCallBack(self, eventCallBack: any, filter: int):
|
||||
"""
|
||||
Add a callback function to the pin.
|
||||
Example:
|
||||
``` python
|
||||
def cb1(signal):
|
||||
print("cb1", signal)
|
||||
io.setCallBack(cb1, io.SIGNAL_RISING)
|
||||
```
|
||||
"""
|
||||
|
||||
@abstractmethod
|
||||
def platformHigh(self): ...
|
||||
|
||||
@ -175,10 +190,11 @@ class DAC(BaseDev):
|
||||
def disable(self):
|
||||
"""Disable the DAC."""
|
||||
|
||||
def write(self, val:float):
|
||||
def write(self, val: float):
|
||||
"""write the DAC value."""
|
||||
|
||||
class UART(BaseDev):
|
||||
|
||||
class UART:
|
||||
def __init__(self): ...
|
||||
|
||||
def setBaudRate(self, baudRate: int):
|
||||
@ -186,6 +202,14 @@ class UART(BaseDev):
|
||||
|
||||
def setId(self, id: int):
|
||||
"""Set the id of the UART."""
|
||||
|
||||
FLOW_CONTROL_NONE: int
|
||||
FLOW_CONTROL_RTS: int
|
||||
FLOW_CONTROL_CTS: int
|
||||
FLOW_CONTROL_RTS_CTS: int
|
||||
|
||||
def setFlowControl(self, flowControl: int):
|
||||
"""Set the flow control of the UART."""
|
||||
|
||||
def enable(self):
|
||||
"""Enable the UART."""
|
||||
@ -205,6 +229,21 @@ class UART(BaseDev):
|
||||
def readBytes(self, length: int) -> bytes:
|
||||
"""Read bytes from the UART."""
|
||||
|
||||
|
||||
SIGNAL_RX: int
|
||||
SIGNAL_TX: int
|
||||
|
||||
def setCallBack(self, eventCallBack: any, filter: int):
|
||||
"""
|
||||
Add a callback function to the pin.
|
||||
Example:
|
||||
``` python
|
||||
def cb1(signal):
|
||||
print(uart.read(-1))
|
||||
io.setCallBack(cb1, uart.SIGNAL_RX)
|
||||
```
|
||||
"""
|
||||
|
||||
@abstractmethod
|
||||
def platformEnable(self): ...
|
||||
|
||||
@ -436,7 +475,7 @@ class CAN(BaseDev):
|
||||
def readBytes(self, length: int) -> bytes:
|
||||
"""Read bytes from the CAN."""
|
||||
|
||||
def addFilter(self, id: int, ide: int, rtr: int, mode: int, mask: int, hdr: int):
|
||||
def addFilter(self, id: int, ide: int, rtr: int, mode: int, mask: int, hdr: int):
|
||||
"""Add a filter."""
|
||||
|
||||
@abstractmethod
|
||||
@ -460,7 +499,7 @@ class CAN(BaseDev):
|
||||
|
||||
class BaseDev:
|
||||
@PIKA_C_MACRO_IF("PIKA_EVENT_ENABLE")
|
||||
def addEventCallBack(self, eventCallback: any):
|
||||
def addEventCallBack(self, eventCallback: any):
|
||||
""" Add an event callback. """
|
||||
|
||||
@abstractmethod
|
||||
|
@ -22,6 +22,9 @@ void PikaStdDevice_GPIO_setId(PikaObj* self, int id) {
|
||||
|
||||
void PikaStdDevice_GPIO___init__(PikaObj* self) {
|
||||
PikaStdDevice_GPIO_init(self);
|
||||
obj_setInt(self, "SIGNAL_RISING", PIKA_HAL_GPIO_EVENT_SIGNAL_RISING);
|
||||
obj_setInt(self, "SIGNAL_FALLING", PIKA_HAL_GPIO_EVENT_SIGNAL_FALLING);
|
||||
obj_setInt(self, "SIGNAL_ANY", PIKA_HAL_GPIO_EVENT_SIGNAL_ANY);
|
||||
}
|
||||
|
||||
void PikaStdDevice_GPIO_disable(PikaObj* self) {
|
||||
@ -145,3 +148,38 @@ void PikaStdDevice_GPIO_platformRead(PikaObj* self) {
|
||||
pika_hal_read(dev, &val, sizeof(val));
|
||||
obj_setInt(self, "readBuff", val);
|
||||
}
|
||||
|
||||
extern PikaEventListener* g_pika_device_event_listener;
|
||||
|
||||
void _pika_hal_GPIO_event_callback(pika_dev* dev,
|
||||
PIKA_HAL_GPIO_EVENT_SIGNAL signal) {
|
||||
pks_eventLisener_sendSignal(g_pika_device_event_listener, (uintptr_t)dev,
|
||||
signal);
|
||||
}
|
||||
|
||||
void PikaStdDevice_GPIO_setCallBack(PikaObj* self,
|
||||
Arg* eventCallBack,
|
||||
int filter) {
|
||||
pika_dev* dev = _get_dev(self);
|
||||
#if PIKA_EVENT_ENABLE
|
||||
obj_setArg(self, "eventCallBack", eventCallBack);
|
||||
/* init event_listener for the first time */
|
||||
if (NULL == g_pika_device_event_listener) {
|
||||
pks_eventLisener_init(&g_pika_device_event_listener);
|
||||
}
|
||||
/* use the pointer of dev as the event id */
|
||||
uint32_t eventId = (uintptr_t)dev;
|
||||
/* regist event to event listener */
|
||||
pks_eventLicener_registEvent(g_pika_device_event_listener, eventId, self);
|
||||
|
||||
/* regist event to pika_hal */
|
||||
pika_hal_GPIO_config cfg_cb = {0};
|
||||
cfg_cb.event_callback = _pika_hal_GPIO_event_callback;
|
||||
cfg_cb.event_callback_filter = filter;
|
||||
cfg_cb.event_callback_ena = PIKA_HAL_EVENT_CALLBACK_ENA_ENABLE;
|
||||
pika_hal_ioctl(dev, PIKA_HAL_IOCTL_CONFIG, &cfg_cb);
|
||||
#else
|
||||
obj_setErrorCode(self, 1);
|
||||
obj_setSysOut(self, "[error] PIKA_EVENT_ENABLE is disabled.");
|
||||
#endif
|
||||
}
|
||||
|
@ -14,6 +14,12 @@ void PikaStdDevice_UART_init(PikaObj* self) {
|
||||
obj_setInt(self, "baudRate", 115200);
|
||||
obj_setInt(self, "id", 1);
|
||||
obj_setStr(self, "readBuff", "");
|
||||
obj_setInt(self, "FLOW_CONTROL_NONE", PIKA_HAL_UART_FLOW_CONTROL_NONE);
|
||||
obj_setInt(self, "FLOW_CONTROL_RTS", PIKA_HAL_UART_FLOW_CONTROL_RTS);
|
||||
obj_setInt(self, "FLOW_CONTROL_CTS", PIKA_HAL_UART_FLOW_CONTROL_CTS);
|
||||
obj_setInt(self, "FLOW_CONTROL_RTS_CTS",
|
||||
PIKA_HAL_UART_FLOW_CONTROL_RTS_CTS);
|
||||
obj_setInt(self, "flowControl", PIKA_HAL_UART_FLOW_CONTROL_NONE);
|
||||
}
|
||||
|
||||
void PikaStdDevice_UART___init__(PikaObj* self) {
|
||||
@ -35,9 +41,15 @@ Arg* PikaStdDevice_UART_readBytes(PikaObj* self, int length) {
|
||||
void PikaStdDevice_UART_setBaudRate(PikaObj* self, int baudRate) {
|
||||
obj_setInt(self, "baudRate", baudRate);
|
||||
}
|
||||
|
||||
void PikaStdDevice_UART_setFlowControl(PikaObj *self, int flowControl){
|
||||
obj_setInt(self, "flowControl", flowControl);
|
||||
}
|
||||
|
||||
void PikaStdDevice_UART_setId(PikaObj* self, int id) {
|
||||
obj_setInt(self, "id", id);
|
||||
}
|
||||
|
||||
void PikaStdDevice_UART_write(PikaObj* self, char* data) {
|
||||
obj_setStr(self, "writeData", data);
|
||||
obj_runNativeMethod(self, "platformWrite", NULL);
|
||||
@ -55,7 +67,7 @@ static pika_dev* _get_dev(PikaObj* self) {
|
||||
}
|
||||
int id = obj_getInt(self, "id");
|
||||
char id_str[32] = {0};
|
||||
sprintf(id_str, "%d", id);
|
||||
sprintf(id_str, "UART%d", id);
|
||||
dev = pika_hal_open(PIKA_HAL_UART, id_str);
|
||||
if (NULL == dev) {
|
||||
__platform_printf("Error: open UART '%s' failed.\r\n", id_str);
|
||||
@ -73,6 +85,7 @@ void PikaStdDevice_UART_platformEnable(PikaObj* self) {
|
||||
}
|
||||
pika_hal_UART_config cfg = {0};
|
||||
cfg.baudrate = obj_getInt(self, "baudRate");
|
||||
cfg.flow_control = obj_getInt(self, "flowControl");
|
||||
pika_hal_ioctl(dev, PIKA_HAL_IOCTL_CONFIG, &cfg);
|
||||
pika_hal_ioctl(dev, PIKA_HAL_IOCTL_ENABLE);
|
||||
}
|
||||
@ -117,3 +130,7 @@ void PikaStdDevice_UART_platformWriteBytes(PikaObj* self) {
|
||||
pika_dev* dev = _get_dev(self);
|
||||
pika_hal_write(dev, data, len);
|
||||
}
|
||||
|
||||
void PikaStdDevice_UART_setCallBack(PikaObj* self,
|
||||
Arg* eventCallBack,
|
||||
int filter) {}
|
||||
|
@ -184,7 +184,9 @@ int pika_hal_GPIO_ioctl_merge_config(pika_hal_GPIO_config* dst,
|
||||
_IOCTL_CONFIG_USE_DEFAULT(pull, PIKA_HAL_GPIO_PULL_NONE);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(speed, PIKA_HAL_GPIO_SPEED_10M);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(event_callback, NULL);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(event_callback_enable,
|
||||
_IOCTL_CONFIG_USE_DEFAULT(event_callback_filter,
|
||||
PIKA_HAL_GPIO_EVENT_SIGNAL_RISING);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(event_callback_ena,
|
||||
PIKA_HAL_EVENT_CALLBACK_ENA_ENABLE);
|
||||
return 0;
|
||||
}
|
||||
@ -195,8 +197,11 @@ int pika_hal_UART_ioctl_merge_config(pika_hal_UART_config* dst,
|
||||
_IOCTL_CONFIG_USE_DEFAULT(data_bits, PIKA_HAL_UART_DATA_BITS_8);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(stop_bits, PIKA_HAL_UART_STOP_BITS_1);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(parity, PIKA_HAL_UART_PARITY_NONE);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(flow_control, PIKA_HAL_UART_FLOW_CONTROL_NONE);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(event_callback, NULL);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(event_callback_enable,
|
||||
_IOCTL_CONFIG_USE_DEFAULT(event_callback_filter,
|
||||
PIKA_HAL_UART_EVENT_SIGNAL_RX);
|
||||
_IOCTL_CONFIG_USE_DEFAULT(event_callback_ena,
|
||||
PIKA_HAL_EVENT_CALLBACK_ENA_ENABLE);
|
||||
return 0;
|
||||
}
|
||||
|
@ -65,8 +65,10 @@ typedef enum {
|
||||
} PIKA_HAL_EVENT_CALLBACK_ENA;
|
||||
|
||||
typedef enum {
|
||||
_PIKA_HAL_GPIO_EVENT_SIGNAL_UNUSED = 0,
|
||||
PIKA_HAL_GPIO_EVENT_SIGNAL_RISING,
|
||||
PIKA_HAL_GPIO_EVENT_SIGNAL_FALLING,
|
||||
PIKA_HAL_GPIO_EVENT_SIGNAL_ANY,
|
||||
} PIKA_HAL_GPIO_EVENT_SIGNAL;
|
||||
|
||||
typedef struct {
|
||||
@ -74,7 +76,8 @@ typedef struct {
|
||||
PIKA_HAL_GPIO_PULL pull;
|
||||
PIKA_HAL_GPIO_SPEED speed;
|
||||
void (*event_callback)(pika_dev* dev, PIKA_HAL_GPIO_EVENT_SIGNAL signal);
|
||||
PIKA_HAL_EVENT_CALLBACK_ENA event_callback_enable;
|
||||
PIKA_HAL_GPIO_EVENT_SIGNAL event_callback_filter;
|
||||
PIKA_HAL_EVENT_CALLBACK_ENA event_callback_ena;
|
||||
} pika_hal_GPIO_config;
|
||||
|
||||
typedef enum {
|
||||
@ -100,6 +103,7 @@ typedef enum {
|
||||
_PIKA_HAL_UART_STOP_BITS_UNUSED = 0,
|
||||
PIKA_HAL_UART_STOP_BITS_1 = 1,
|
||||
PIKA_HAL_UART_STOP_BITS_2 = 2,
|
||||
PIKA_HAL_UART_STOP_BITS_1_5 = 3,
|
||||
} PIKA_HAL_UART_STOP_BITS;
|
||||
|
||||
typedef enum {
|
||||
@ -110,16 +114,29 @@ typedef enum {
|
||||
} PIKA_HAL_UART_PARITY;
|
||||
|
||||
typedef enum {
|
||||
_PIKA_HAL_UART_EVENT_SIGNAL_UNUSED = 0,
|
||||
PIKA_HAL_UART_EVENT_SIGNAL_RX,
|
||||
PIKA_HAL_UART_EVENT_SIGNAL_TX,
|
||||
PIKA_HAL_UART_EVENT_SIGNAL_ANY,
|
||||
} PIKA_HAL_UART_EVENT_SIGNAL;
|
||||
|
||||
typedef enum {
|
||||
_PIKA_HAL_UART_FLOW_CONTROL_UNUSED = 0,
|
||||
PIKA_HAL_UART_FLOW_CONTROL_NONE,
|
||||
PIKA_HAL_UART_FLOW_CONTROL_RTS,
|
||||
PIKA_HAL_UART_FLOW_CONTROL_CTS,
|
||||
PIKA_HAL_UART_FLOW_CONTROL_RTS_CTS,
|
||||
} PIKA_HAL_UART_FLOW_CONTROL;
|
||||
|
||||
typedef struct {
|
||||
PIKA_HAL_UART_BAUDRATE baudrate;
|
||||
PIKA_HAL_UART_DATA_BITS data_bits;
|
||||
PIKA_HAL_UART_STOP_BITS stop_bits;
|
||||
PIKA_HAL_UART_PARITY parity;
|
||||
PIKA_HAL_UART_FLOW_CONTROL flow_control;
|
||||
void (*event_callback)(pika_dev* dev, PIKA_HAL_UART_EVENT_SIGNAL signal);
|
||||
PIKA_HAL_EVENT_CALLBACK_ENA event_callback_enable;
|
||||
PIKA_HAL_UART_EVENT_SIGNAL event_callback_filter;
|
||||
PIKA_HAL_EVENT_CALLBACK_ENA event_callback_ena;
|
||||
} pika_hal_UART_config;
|
||||
|
||||
typedef uint32_t PIKA_HAL_IIC_SLAVE_ADDR;
|
||||
|
@ -1635,11 +1635,11 @@ void pks_eventLisener_sendSignal(PikaEventListener* self,
|
||||
#else
|
||||
/* push event handler to vm event list */
|
||||
if (PIKA_RES_OK != VMSignal_pushEvent(self, eventId, eventSignal)) {
|
||||
__platform_printf(
|
||||
"OverflowError: event list is full, please use bigger "
|
||||
"PIKA_EVENT_LIST_SIZE\r\n");
|
||||
while (1) {
|
||||
}
|
||||
// __platform_printf(
|
||||
// "OverflowError: event list is full, please use bigger "
|
||||
// "PIKA_EVENT_LIST_SIZE\r\n");
|
||||
// while (1) {
|
||||
// }
|
||||
}
|
||||
if (0 == VMSignal_getVMCnt()) {
|
||||
/* no vm running, pick up event imediately */
|
||||
|
@ -7,7 +7,7 @@ TEST(event, gpio) {
|
||||
/* init */
|
||||
PikaObj* pikaMain = newRootObj("pikaMain", New_PikaMain);
|
||||
/* run */
|
||||
pikaVM_runSingleFile(pikaMain, "../../examples/TemplateDevice/gpio_cb.py");
|
||||
pikaVM_runSingleFile(pikaMain, "test/python/TemplateDevice/gpio_cb.py");
|
||||
|
||||
#define EVENT_SIGAL_IO_RISING_EDGE 0x01
|
||||
#define EVENT_SIGAL_IO_FALLING_EDGE 0x02
|
||||
|
21
test/python/TemplateDevice/gpio_cb.py
Normal file
21
test/python/TemplateDevice/gpio_cb.py
Normal file
@ -0,0 +1,21 @@
|
||||
import TemplateDevice
|
||||
|
||||
io1 = TemplateDevice.GPIO()
|
||||
io1.setPin('PA8')
|
||||
io1.setMode('in')
|
||||
io1.enable()
|
||||
|
||||
EVENT_SIGAL_IO_RISING_EDGE = 0x01
|
||||
EVENT_SIGAL_IO_FALLING_EDGE = 0x02
|
||||
|
||||
|
||||
def callBack1(signal):
|
||||
if signal == EVENT_SIGAL_IO_RISING_EDGE:
|
||||
print('get rising edge!')
|
||||
elif signal == EVENT_SIGAL_IO_FALLING_EDGE:
|
||||
print('get falling edge!')
|
||||
else:
|
||||
return signal
|
||||
|
||||
|
||||
io1.addEventCallBack(callBack1)
|
Loading…
x
Reference in New Issue
Block a user