From 226cba58e474448a9d8773c5a1a1bd83f148baee Mon Sep 17 00:00:00 2001 From: lyon1998 Date: Mon, 1 May 2023 20:11:18 +0800 Subject: [PATCH 1/2] add_files --- package/PikaStdDevice/PikaStdDevice_UART.c | 38 +++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/package/PikaStdDevice/PikaStdDevice_UART.c b/package/PikaStdDevice/PikaStdDevice_UART.c index 2de444d80..1c00d58ff 100644 --- a/package/PikaStdDevice/PikaStdDevice_UART.c +++ b/package/PikaStdDevice/PikaStdDevice_UART.c @@ -1,5 +1,6 @@ #include "PikaStdDevice_UART.h" #include "PikaStdDevice_common.h" +#include "pika_hal.h" void PikaStdDevice_UART_enable(PikaObj* self) { obj_runNativeMethod(self, "platformEnable", NULL); @@ -39,6 +40,7 @@ void PikaStdDevice_UART_init(PikaObj* self) { obj_setInt(self, "dataBits", 8); obj_setInt(self, "parity", PIKA_HAL_UART_PARITY_NONE); obj_setInt(self, "stopBits", PIKA_HAL_UART_STOP_BITS_1); + obj_setInt(self, "enabled", 0); } void PikaStdDevice_UART___init__(PikaObj* self) { @@ -57,24 +59,52 @@ Arg* PikaStdDevice_UART_readBytes(PikaObj* self, int length) { return arg_copy(obj_getArg(self, "readData")); } +int _config_update(PikaObj* self, pika_hal_UART_config* cfg){ + if (obj_getInt(self, "enabled")) { + pika_debug("UART %s config update.\r\n", obj_getStr(self, "id")); + int err = pika_hal_ioctl(obj_getPtr(self, "pika_dev"), + PIKA_HAL_IOCTL_CONFIG, cfg); + if (err == 0) { + return 0; + } + pika_debug("UART %s config update failed.\r\n", obj_getStr(self, "id")); + } + return -1; +} + void PikaStdDevice_UART_setBaudRate(PikaObj* self, int baudRate) { obj_setInt(self, "baudRate", baudRate); + pika_hal_UART_config cfg = {0}; + cfg.baudrate = baudRate; + _config_update(self, &cfg); } void PikaStdDevice_UART_setFlowControl(PikaObj* self, int flowControl) { obj_setInt(self, "flowControl", flowControl); + pika_hal_UART_config cfg = {0}; + cfg.flow_control = flowControl; + _config_update(self, &cfg); } void PikaStdDevice_UART_setDataBits(PikaObj* self, int dataBits) { obj_setInt(self, "dataBits", dataBits); + pika_hal_UART_config cfg = {0}; + cfg.data_bits = dataBits; + _config_update(self, &cfg); } void PikaStdDevice_UART_setParity(PikaObj* self, int parity) { obj_setInt(self, "parity", parity); + pika_hal_UART_config cfg = {0}; + cfg.parity = parity; + _config_update(self, &cfg); } void PikaStdDevice_UART_setStopBits(PikaObj* self, int stopBits) { obj_setInt(self, "stopBits", stopBits); + pika_hal_UART_config cfg = {0}; + cfg.stop_bits = stopBits; + _config_update(self, &cfg); } void PikaStdDevice_UART_setId(PikaObj* self, int id) { @@ -161,6 +191,7 @@ void PikaStdDevice_UART_platformEnable(PikaObj* self) { (int)obj_getInt(self, "id")); return; } + obj_setInt(self, "enabled", 1); } void PikaStdDevice_UART_platformRead(PikaObj* self) { @@ -186,7 +217,12 @@ void PikaStdDevice_UART_platformDisable(PikaObj* self) { (int)obj_getInt(self, "id")); return; } - pika_hal_ioctl(dev, PIKA_HAL_IOCTL_DISABLE); + if (0!= pika_hal_ioctl(dev, PIKA_HAL_IOCTL_DISABLE)){ + __platform_printf("Error: disable UART '%d' failed.\r\n", + (int)obj_getInt(self, "id")); + return; + } + obj_setInt(self, "enabled", 0); } void PikaStdDevice_UART_platformReadBytes(PikaObj* self) { From 851258e7109c49745808fc0d824ca2a7cc477133 Mon Sep 17 00:00:00 2001 From: lyon1998 Date: Mon, 1 May 2023 20:11:18 +0800 Subject: [PATCH 2/2] update_toml --- packages.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages.toml b/packages.toml index 2ddce5670..b79b35a90 100644 --- a/packages.toml +++ b/packages.toml @@ -187,7 +187,8 @@ releases = [ "v2.3.3 5282cff66fe8f003c75fd82c54c0144aa7da8277", "v2.3.4 69cea1d7188b35b84d819ed8cb8f41b3a64d39d1", "v2.3.5 cd0029b6d1b4340b252532fcee1320667231038c", - "v2.3.6 b9a0109c6125d16270cf02b2a07421a4baf9973c" + "v2.3.6 b9a0109c6125d16270cf02b2a07421a4baf9973c", + "v2.3.7 226cba58e474448a9d8773c5a1a1bd83f148baee" ] [[packages]]