Procházet zdrojové kódy

remove platform<method> for PikaStdDevice

lyon před 2 roky
rodič
revize
b51da56a49

+ 0 - 85
port/linux/package/pikascript/PikaStdDevice.pyi

@@ -94,18 +94,6 @@ class GPIO(BaseDev):
 
     def close(self): ...
 
-    def platformHigh(self): ...
-
-    def platformLow(self): ...
-
-    def platformEnable(self): ...
-
-    def platformDisable(self): ...
-
-    def platformSetMode(self): ...
-
-    def platformRead(self): ...
-
 
 def Time() -> time:
     """ deprecated use time module instead """
@@ -174,15 +162,6 @@ class ADC(BaseDev):
 
     def close(self): ...
 
-    @abstractmethod
-    def platformEnable(self): ...
-
-    @abstractmethod
-    def platformRead(self): ...
-
-    @abstractmethod
-    def platformDisable(self): ...
-
 
 class DAC(BaseDev):
     def __init__(self): ...
@@ -298,24 +277,6 @@ class UART:
         deprecated, you can use `setCallback` instead.
         """
 
-    @abstractmethod
-    def platformEnable(self): ...
-
-    @abstractmethod
-    def platformWrite(self): ...
-
-    @abstractmethod
-    def platformWriteBytes(self): ...
-
-    @abstractmethod
-    def platformRead(self): ...
-
-    @abstractmethod
-    def platformReadBytes(self): ...
-
-    @abstractmethod
-    def platformDisable(self): ...
-
 
 class IIC(BaseDev):
     def __init__(self): ...
@@ -347,23 +308,6 @@ class IIC(BaseDev):
     def readBytes(self, addr: int, length: int) -> bytes:
         """Read bytes from the IIC."""
 
-    @abstractmethod
-    def platformEnable(self): ...
-
-    @abstractmethod
-    def platformWrite(self): ...
-
-    @abstractmethod
-    def platformWriteBytes(self): ...
-
-    @abstractmethod
-    def platformRead(self): ...
-
-    @abstractmethod
-    def platformReadBytes(self): ...
-
-    @abstractmethod
-    def platformDisable(self): ...
 
 
 class PWM(BaseDev):
@@ -411,17 +355,6 @@ class PWM(BaseDev):
 
     def close(self): ...
 
-    @abstractmethod
-    def platformEnable(self): ...
-
-    @abstractmethod
-    def platformSetFrequency(self): ...
-
-    @abstractmethod
-    def platformSetDuty(self): ...
-
-    @abstractmethod
-    def platformDisable(self): ...
 
 
 class SPI(BaseDev):
@@ -518,24 +451,6 @@ class CAN(BaseDev):
     def addFilter(self, id: int, ide: int, rtr: int, mode: int, mask: int, hdr: int):
         """Add a filter."""
 
-    @abstractmethod
-    def platformEnable(self): ...
-
-    @abstractmethod
-    def platformWrite(self): ...
-
-    @abstractmethod
-    def platformWriteBytes(self): ...
-
-    @abstractmethod
-    def platformRead(self): ...
-
-    @abstractmethod
-    def platformReadBytes(self): ...
-
-    @abstractmethod
-    def platformDisable(self): ...
-
 
 class BaseDev:
     @PIKA_C_MACRO_IF("PIKA_EVENT_ENABLE")

+ 16 - 28
port/linux/package/pikascript/pikascript-lib/PikaStdDevice/PikaStdDevice_ADC.c

@@ -1,14 +1,6 @@
 #include "PikaStdDevice_ADC.h"
 #include "PikaStdDevice_common.h"
 
-void PikaStdDevice_ADC_enable(PikaObj* self) {
-    obj_runNativeMethod(self, "platformEnable", NULL);
-}
-
-void PikaStdDevice_ADC_disable(PikaObj* self) {
-    obj_runNativeMethod(self, "platformDisable", NULL);
-}
-
 void PikaStdDevice_ADC_init(PikaObj* self) {
     obj_setStr(self, "pin", "PA0");
 }
@@ -17,15 +9,6 @@ void PikaStdDevice_ADC___init__(PikaObj* self) {
     PikaStdDevice_ADC_init(self);
 }
 
-pika_float PikaStdDevice_ADC_read(PikaObj* self) {
-    obj_runNativeMethod(self, "platformRead", NULL);
-    return obj_getFloat(self, "val");
-}
-
-void PikaStdDevice_ADC_setPin(PikaObj* self, char* pin) {
-    obj_setStr(self, "pin", pin);
-}
-
 static pika_dev* _get_dev(PikaObj* self) {
     pika_dev* dev = PIKA_HAL_OBJ2DEV(self);
     if (NULL != dev) {
@@ -40,7 +23,21 @@ static pika_dev* _get_dev(PikaObj* self) {
     return dev;
 }
 
-void PikaStdDevice_ADC_platformEnable(PikaObj* self) {
+pika_float PikaStdDevice_ADC_read(PikaObj* self) {
+    pika_dev* dev = _get_dev(self);
+    pika_hal_ADC_config* cfg = (pika_hal_ADC_config*)dev->ioctl_config;
+    uint32_t val_i = 0;
+    pika_hal_read(dev, &val_i, sizeof(val_i));
+    pika_float val = (pika_float)val_i / (pika_float)cfg->max * cfg->vref;
+    val = val_i * obj_setFloat(self, "val", val);
+    return obj_getFloat(self, "val");
+}
+
+void PikaStdDevice_ADC_setPin(PikaObj* self, char* pin) {
+    obj_setStr(self, "pin", pin);
+}
+
+void PikaStdDevice_ADC_enable(PikaObj* self) {
     pika_dev* dev = _get_dev(self);
     if (NULL == dev) {
         __platform_printf("Error: open ADC '%s' failed.\r\n",
@@ -53,20 +50,11 @@ void PikaStdDevice_ADC_platformEnable(PikaObj* self) {
     pika_hal_ioctl(dev, PIKA_HAL_IOCTL_ENABLE);
 }
 
-void PikaStdDevice_ADC_platformDisable(PikaObj* self) {
+void PikaStdDevice_ADC_disable(PikaObj* self) {
     pika_dev* dev = _get_dev(self);
     pika_hal_ioctl(dev, PIKA_HAL_IOCTL_DISABLE);
 }
 
-void PikaStdDevice_ADC_platformRead(PikaObj* self) {
-    pika_dev* dev = _get_dev(self);
-    pika_hal_ADC_config* cfg = (pika_hal_ADC_config*)dev->ioctl_config;
-    uint32_t val_i = 0;
-    pika_hal_read(dev, &val_i, sizeof(val_i));
-    pika_float val = (pika_float)val_i / (pika_float)cfg->max * cfg->vref;
-    val = val_i * obj_setFloat(self, "val", val);
-}
-
 void PikaStdDevice_ADC_close(PikaObj* self) {
     pika_dev* dev = _get_dev(self);
     pika_hal_close(dev);

+ 2 - 34
port/linux/package/pikascript/pikascript-lib/PikaStdDevice/PikaStdDevice_CAN.c

@@ -13,13 +13,9 @@ void PikaStdDevice_CAN_addFilter(PikaObj* self,
     ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
 }
 
-void PikaStdDevice_CAN_disable(PikaObj* self) {
-    obj_runNativeMethod(self, "platformDisable", NULL);
-}
+void PikaStdDevice_CAN_disable(PikaObj* self) {}
 
-void PikaStdDevice_CAN_enable(PikaObj* self) {
-    obj_runNativeMethod(self, "platformEnable", NULL);
-}
+void PikaStdDevice_CAN_enable(PikaObj* self) {}
 
 void PikaStdDevice_CAN_setId(PikaObj* self, int id) {
     obj_setInt(self, "id", id);
@@ -39,46 +35,18 @@ void PikaStdDevice_CAN_setBaudRate(PikaObj* self, int baudRate) {
 
 char* PikaStdDevice_CAN_read(PikaObj* self, int length) {
     obj_setInt(self, "length", length);
-    obj_runNativeMethod(self, "platformRead", NULL);
     return obj_getStr(self, "readData");
 }
 
 Arg* PikaStdDevice_CAN_readBytes(PikaObj* self, int length) {
     obj_setInt(self, "length", length);
-    obj_runNativeMethod(self, "platformReadBytes", NULL);
     return arg_copy(obj_getArg(self, "readData"));
 }
 
 void PikaStdDevice_CAN_write(PikaObj* self, char* data) {
     obj_setStr(self, "writeData", data);
-    obj_runNativeMethod(self, "platformWrite", NULL);
 }
 
 void PikaStdDevice_CAN_writeBytes(PikaObj* self, uint8_t* data, int length) {
     obj_setBytes(self, "writeData", data, length);
-    obj_runNativeMethod(self, "platformWriteBytes", NULL);
-}
-
-void PikaStdDevice_CAN_platformDisable(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}
-
-void PikaStdDevice_CAN_platformEnable(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}
-
-void PikaStdDevice_CAN_platformRead(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}
-
-void PikaStdDevice_CAN_platformWrite(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}
-
-void PikaStdDevice_CAN_platformReadBytes(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}
-
-void PikaStdDevice_CAN_platformWriteBytes(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
 }

+ 46 - 71
port/linux/package/pikascript/pikascript-lib/PikaStdDevice/PikaStdDevice_GPIO.c

@@ -1,6 +1,20 @@
 #include "PikaStdDevice_GPIO.h"
 #include "PikaStdDevice_common.h"
 
+static pika_dev* _get_dev(PikaObj* self) {
+    pika_dev* dev = PIKA_HAL_OBJ2DEV(self);
+    if (NULL != dev) {
+        return dev;
+    }
+    dev = pika_hal_open(PIKA_HAL_GPIO, obj_getStr(self, "pin"));
+    if (NULL == dev) {
+        __platform_printf("Error: open GPIO '%s' failed.\r\n",
+                          obj_getStr(self, "pin"));
+    }
+    obj_setPtr(self, "pika_dev", dev);
+    return dev;
+}
+
 void PikaStdDevice_GPIO_init(PikaObj* self) {
     obj_setInt(self, "isEnable", 0);
     obj_setStr(self, "pin", "none");
@@ -28,12 +42,14 @@ void PikaStdDevice_GPIO___init__(PikaObj* self) {
 
 void PikaStdDevice_GPIO_disable(PikaObj* self) {
     obj_setInt(self, "isEnable", 0);
-    obj_runNativeMethod(self, "platformDisable", NULL);
+    pika_dev* dev = _get_dev(self);
+    pika_hal_ioctl(dev, PIKA_HAL_IOCTL_DISABLE);
 }
 
 void PikaStdDevice_GPIO_enable(PikaObj* self) {
     obj_setInt(self, "isEnable", 1);
-    obj_runNativeMethod(self, "platformEnable", NULL);
+    pika_dev* dev = _get_dev(self);
+    pika_hal_ioctl(dev, PIKA_HAL_IOCTL_ENABLE);
 }
 
 char* PikaStdDevice_GPIO_getMode(PikaObj* self) {
@@ -46,23 +62,47 @@ char* PikaStdDevice_GPIO_getPin(PikaObj* self) {
 
 void PikaStdDevice_GPIO_low(PikaObj* self) {
     obj_setInt(self, "isOn", 0);
-    obj_runNativeMethod(self, "platformLow", NULL);
+    pika_dev* dev = _get_dev(self);
+    uint32_t val = 0;
+    pika_hal_write(dev, &val, sizeof(val));
 }
 
 void PikaStdDevice_GPIO_high(PikaObj* self) {
     obj_setInt(self, "isOn", 1);
-    obj_runNativeMethod(self, "platformHigh", NULL);
+    pika_dev* dev = _get_dev(self);
+    uint32_t val = 1;
+    pika_hal_write(dev, &val, sizeof(val));
 }
 
 int PikaStdDevice_GPIO_read(PikaObj* self) {
-    obj_runNativeMethod(self, "platformRead", NULL);
+    pika_dev* dev = _get_dev(self);
+    uint32_t val = 0;
+    pika_hal_read(dev, &val, sizeof(val));
+    obj_setInt(self, "readBuff", val);
     return obj_getInt(self, "readBuff");
 }
 
 void PikaStdDevice_GPIO_setMode(PikaObj* self, char* mode) {
     if (strEqu(mode, "out") || strEqu(mode, "in")) {
         obj_setStr(self, "mode", mode);
-        obj_runNativeMethod(self, "platformSetMode", NULL);
+        pika_hal_GPIO_config cfg = {0};
+        if (strEqu(mode, "in")) {
+            cfg.dir = PIKA_HAL_GPIO_DIR_IN;
+        } else {
+            cfg.dir = PIKA_HAL_GPIO_DIR_OUT;
+        }
+        pika_dev* dev = _get_dev(self);
+        char* pull = obj_getStr(self, "pull");
+        if (strEqu(pull, "up")) {
+            cfg.pull = PIKA_HAL_GPIO_PULL_UP;
+        }
+        if (strEqu(pull, "down")) {
+            cfg.pull = PIKA_HAL_GPIO_PULL_DOWN;
+        }
+        if (strEqu(pull, "none")) {
+            cfg.pull = PIKA_HAL_GPIO_PULL_NONE;
+        }
+        pika_hal_ioctl(dev, PIKA_HAL_IOCTL_CONFIG, &cfg);
     } else {
         obj_setErrorCode(self, 1);
         obj_setSysOut(self, "[error] GPIO mode should be 'out' or 'in'.");
@@ -79,75 +119,10 @@ void PikaStdDevice_GPIO_setPull(PikaObj* self, char* pull) {
     }
 }
 
-static pika_dev* _get_dev(PikaObj* self) {
-    pika_dev* dev = PIKA_HAL_OBJ2DEV(self);
-    if (NULL != dev) {
-        return dev;
-    }
-    dev = pika_hal_open(PIKA_HAL_GPIO, obj_getStr(self, "pin"));
-    if (NULL == dev) {
-        __platform_printf("Error: open GPIO '%s' failed.\r\n",
-                          obj_getStr(self, "pin"));
-    }
-    obj_setPtr(self, "pika_dev", dev);
-    return dev;
-}
-
 void PikaStdDevice_GPIO_setPin(PikaObj* self, char* pinName) {
     obj_setStr(self, "pin", pinName);
 }
 
-void PikaStdDevice_GPIO_platformDisable(PikaObj* self) {
-    pika_dev* dev = _get_dev(self);
-    pika_hal_ioctl(dev, PIKA_HAL_IOCTL_DISABLE);
-}
-
-void PikaStdDevice_GPIO_platformEnable(PikaObj* self) {
-    pika_dev* dev = _get_dev(self);
-    pika_hal_ioctl(dev, PIKA_HAL_IOCTL_ENABLE);
-}
-
-void PikaStdDevice_GPIO_platformLow(PikaObj* self) {
-    pika_dev* dev = _get_dev(self);
-    uint32_t val = 0;
-    pika_hal_write(dev, &val, sizeof(val));
-}
-
-void PikaStdDevice_GPIO_platformHigh(PikaObj* self) {
-    pika_dev* dev = _get_dev(self);
-    uint32_t val = 1;
-    pika_hal_write(dev, &val, sizeof(val));
-}
-
-void PikaStdDevice_GPIO_platformSetMode(PikaObj* self) {
-    char* mode = obj_getStr(self, "mode");
-    pika_hal_GPIO_config cfg = {0};
-    if (strEqu(mode, "in")) {
-        cfg.dir = PIKA_HAL_GPIO_DIR_IN;
-    } else {
-        cfg.dir = PIKA_HAL_GPIO_DIR_OUT;
-    }
-    pika_dev* dev = _get_dev(self);
-    char* pull = obj_getStr(self, "pull");
-    if (strEqu(pull, "up")) {
-        cfg.pull = PIKA_HAL_GPIO_PULL_UP;
-    }
-    if (strEqu(pull, "down")) {
-        cfg.pull = PIKA_HAL_GPIO_PULL_DOWN;
-    }
-    if (strEqu(pull, "none")) {
-        cfg.pull = PIKA_HAL_GPIO_PULL_NONE;
-    }
-    pika_hal_ioctl(dev, PIKA_HAL_IOCTL_CONFIG, &cfg);
-}
-
-void PikaStdDevice_GPIO_platformRead(PikaObj* self) {
-    pika_dev* dev = _get_dev(self);
-    uint32_t val = 0;
-    pika_hal_read(dev, &val, sizeof(val));
-    obj_setInt(self, "readBuff", val);
-}
-
 void PikaStdDevice_GPIO_setCallback(PikaObj* self,
                                     Arg* eventCallback,
                                     int filter) {

+ 2 - 34
port/linux/package/pikascript/pikascript-lib/PikaStdDevice/PikaStdDevice_IIC.c

@@ -11,13 +11,9 @@ void PikaStdDevice_IIC___init__(PikaObj* self) {
     PikaStdDevice_IIC_init(self);
 }
 
-void PikaStdDevice_IIC_enable(PikaObj* self) {
-    obj_runNativeMethod(self, "platformEnable", NULL);
-}
+void PikaStdDevice_IIC_enable(PikaObj* self) {}
 
-void PikaStdDevice_IIC_disable(PikaObj* self) {
-    obj_runNativeMethod(self, "platformDisable", NULL);
-}
+void PikaStdDevice_IIC_disable(PikaObj* self) {}
 
 void PikaStdDevice_IIC_setDeviceAddr(PikaObj* self, int addr) {
     obj_setInt(self, "deviceAddr", addr);
@@ -34,7 +30,6 @@ void PikaStdDevice_IIC_setPinSDA(PikaObj* self, char* pin) {
 void PikaStdDevice_IIC_write(PikaObj* self, int addr, char* data) {
     obj_setStr(self, "writeData", data);
     obj_setInt(self, "writeAddr", addr);
-    obj_runNativeMethod(self, "platformWrite", NULL);
 }
 
 void PikaStdDevice_IIC_writeBytes(PikaObj* self,
@@ -43,43 +38,16 @@ void PikaStdDevice_IIC_writeBytes(PikaObj* self,
                                   int length) {
     obj_setBytes(self, "writeData", data, length);
     obj_setInt(self, "writeAddr", addr);
-    obj_runNativeMethod(self, "platformWriteBytes", NULL);
 }
 
 char* PikaStdDevice_IIC_read(PikaObj* self, int addr, int length) {
     obj_setInt(self, "length", length);
     obj_setInt(self, "readAddr", addr);
-    obj_runNativeMethod(self, "platformRead", NULL);
     return obj_getStr(self, "readData");
 }
 
 Arg* PikaStdDevice_IIC_readBytes(PikaObj* self, int addr, int length) {
     obj_setInt(self, "length", length);
     obj_setInt(self, "readAddr", addr);
-    obj_runNativeMethod(self, "platformReadBytes", NULL);
     return arg_copy(obj_getArg(self, "readData"));
 }
-
-void PikaStdDevice_IIC_platformWrite(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}
-
-void PikaStdDevice_IIC_platformEnable(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}
-
-void PikaStdDevice_IIC_platformDisable(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}
-
-void PikaStdDevice_IIC_platformRead(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}
-
-void PikaStdDevice_IIC_platformReadBytes(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}
-
-void PikaStdDevice_IIC_platformWriteBytes(PikaObj* self) {
-    ABSTRACT_METHOD_NEED_OVERRIDE_ERROR();
-}

+ 29 - 47
port/linux/package/pikascript/pikascript-lib/PikaStdDevice/PikaStdDevice_PWM.c

@@ -1,6 +1,20 @@
 #include "PikaStdDevice_PWM.h"
 #include "PikaStdDevice_common.h"
 
+static pika_dev* _get_dev(PikaObj* self) {
+    pika_dev* dev = PIKA_HAL_OBJ2DEV(self);
+    if (NULL != dev) {
+        return dev;
+    }
+    dev = pika_hal_open(PIKA_HAL_PWM, obj_getStr(self, "pin"));
+    if (NULL == dev) {
+        __platform_printf("Error: open PWM '%s' failed.\r\n",
+                          obj_getStr(self, "pin"));
+    }
+    obj_setPtr(self, "pika_dev", dev);
+    return dev;
+}
+
 void PikaStdDevice_PWM_init(PikaObj* self) {
     obj_setStr(self, "pin", "none");
     obj_setStr(self, "name", "none");
@@ -19,20 +33,31 @@ void PikaStdDevice_PWM_setPin(PikaObj* self, char* pin) {
 
 void PikaStdDevice_PWM_setFrequency(PikaObj* self, int freq) {
     obj_setInt(self, "freq", freq);
-    obj_runNativeMethod(self, "platformSetFrequency", NULL);
+    pika_float duty = obj_getFloat(self, "duty");  // 0.0 ~ 1.0
+    pika_hal_PWM_config cfg = {0};
+    /* ns */
+    cfg.period = (uint32_t)(1000000000.0f / freq);
+    cfg.duty = (uint32_t)(1000000000.0f / freq * duty);
+    pika_hal_ioctl(_get_dev(self), PIKA_HAL_IOCTL_CONFIG, &cfg);
 }
 
 void PikaStdDevice_PWM_setDuty(PikaObj* self, pika_float duty) {
     obj_setFloat(self, "duty", duty);
-    obj_runNativeMethod(self, "platformSetDuty", NULL);
+    uint32_t freq = obj_getInt(self, "freq");  // Hz
+    pika_hal_PWM_config cfg = {0};
+    /* ns */
+    cfg.duty = (uint32_t)(1000000000.0f / freq * duty);
+    pika_hal_ioctl(_get_dev(self), PIKA_HAL_IOCTL_CONFIG, &cfg);
 }
 
 void PikaStdDevice_PWM_enable(PikaObj* self) {
-    obj_runNativeMethod(self, "platformEnable", NULL);
+    pika_dev* dev = _get_dev(self);
+    pika_hal_ioctl(dev, PIKA_HAL_IOCTL_ENABLE);
 }
 
 void PikaStdDevice_PWM_disable(PikaObj* self) {
-    obj_runNativeMethod(self, "platformDisable", NULL);
+    pika_dev* dev = _get_dev(self);
+    pika_hal_ioctl(dev, PIKA_HAL_IOCTL_DISABLE);
 }
 
 pika_float PikaStdDevice_PWM_getDuty(PikaObj* self) {
@@ -63,49 +88,6 @@ void PikaStdDevice_PWM_setFreq(PikaObj* self, int freq) {
     PikaStdDevice_PWM_setFrequency(self, freq);
 }
 
-static pika_dev* _get_dev(PikaObj* self) {
-    pika_dev* dev = PIKA_HAL_OBJ2DEV(self);
-    if (NULL != dev) {
-        return dev;
-    }
-    dev = pika_hal_open(PIKA_HAL_PWM, obj_getStr(self, "pin"));
-    if (NULL == dev) {
-        __platform_printf("Error: open PWM '%s' failed.\r\n",
-                          obj_getStr(self, "pin"));
-    }
-    obj_setPtr(self, "pika_dev", dev);
-    return dev;
-}
-
-void PikaStdDevice_PWM_platformEnable(PikaObj* self) {
-    pika_dev* dev = _get_dev(self);
-    pika_hal_ioctl(dev, PIKA_HAL_IOCTL_ENABLE);
-}
-
-void PikaStdDevice_PWM_platformSetDuty(PikaObj* self) {
-    pika_float duty = obj_getFloat(self, "duty");  // 0.0 ~ 1.0
-    uint32_t freq = obj_getInt(self, "freq");      // Hz
-    pika_hal_PWM_config cfg = {0};
-    /* ns */
-    cfg.duty = (uint32_t)(1000000000.0f / freq * duty);
-    pika_hal_ioctl(_get_dev(self), PIKA_HAL_IOCTL_CONFIG, &cfg);
-}
-
-void PikaStdDevice_PWM_platformSetFrequency(PikaObj* self) {
-    uint32_t freq = obj_getInt(self, "freq");      // Hz
-    pika_float duty = obj_getFloat(self, "duty");  // 0.0 ~ 1.0
-    pika_hal_PWM_config cfg = {0};
-    /* ns */
-    cfg.period = (uint32_t)(1000000000.0f / freq);
-    cfg.duty = (uint32_t)(1000000000.0f / freq * duty);
-    pika_hal_ioctl(_get_dev(self), PIKA_HAL_IOCTL_CONFIG, &cfg);
-}
-
-void PikaStdDevice_PWM_platformDisable(PikaObj* self) {
-    pika_dev* dev = _get_dev(self);
-    pika_hal_ioctl(dev, PIKA_HAL_IOCTL_DISABLE);
-}
-
 void PikaStdDevice_PWM_close(PikaObj* self) {
     pika_dev* dev = _get_dev(self);
     pika_hal_close(dev);

+ 83 - 113
port/linux/package/pikascript/pikascript-lib/PikaStdDevice/PikaStdDevice_UART.c

@@ -1,96 +1,6 @@
 #include "PikaStdDevice_UART.h"
 #include "PikaStdDevice_common.h"
 
-void PikaStdDevice_UART_enable(PikaObj* self) {
-    obj_runNativeMethod(self, "platformEnable", NULL);
-}
-
-void PikaStdDevice_UART_disable(PikaObj* self) {
-    obj_runNativeMethod(self, "platformDisable", NULL);
-}
-
-void PikaStdDevice_UART_init(PikaObj* self) {
-    /* const */
-    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, "SIGNAL_RX", PIKA_HAL_UART_EVENT_SIGNAL_RX);
-    obj_setInt(self, "SIGNAL_TX", PIKA_HAL_UART_EVENT_SIGNAL_TX);
-
-    obj_setInt(self, "STOP_BITS_1", PIKA_HAL_UART_STOP_BITS_1);
-    obj_setInt(self, "STOP_BITS_2", PIKA_HAL_UART_STOP_BITS_2);
-    obj_setInt(self, "STOP_BITS_1_5", PIKA_HAL_UART_STOP_BITS_1_5);
-    obj_setInt(self, "PARITY_NONE", PIKA_HAL_UART_PARITY_NONE);
-    obj_setInt(self, "PARITY_ODD", PIKA_HAL_UART_PARITY_ODD);
-    obj_setInt(self, "PARITY_EVEN", PIKA_HAL_UART_PARITY_EVEN);
-
-    /* default */
-    obj_setInt(self, "baudRate", 115200);
-    obj_setInt(self, "id", 1);
-    obj_setStr(self, "readBuff", "");
-    obj_setInt(self, "flowControl", PIKA_HAL_UART_FLOW_CONTROL_NONE);
-    obj_setStr(self, "TXpin", "none");
-    obj_setStr(self, "RXpin", "none");
-    obj_setStr(self, "RTSpin", "none");
-    obj_setStr(self, "CTSpin", "none");
-    obj_setInt(self, "dataBits", 8);
-    obj_setInt(self, "parity", PIKA_HAL_UART_PARITY_NONE);
-    obj_setInt(self, "stopBits", PIKA_HAL_UART_STOP_BITS_1);
-}
-
-void PikaStdDevice_UART___init__(PikaObj* self) {
-    PikaStdDevice_UART_init(self);
-}
-
-char* PikaStdDevice_UART_read(PikaObj* self, int length) {
-    obj_setInt(self, "length", length);
-    obj_runNativeMethod(self, "platformRead", NULL);
-    return obj_getStr(self, "readData");
-}
-
-Arg* PikaStdDevice_UART_readBytes(PikaObj* self, int length) {
-    obj_setInt(self, "length", length);
-    obj_runNativeMethod(self, "platformReadBytes", NULL);
-    return arg_copy(obj_getArg(self, "readData"));
-}
-
-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_setDataBits(PikaObj* self, int dataBits) {
-    obj_setInt(self, "dataBits", dataBits);
-}
-
-void PikaStdDevice_UART_setParity(PikaObj* self, int parity) {
-    obj_setInt(self, "parity", parity);
-}
-
-void PikaStdDevice_UART_setStopBits(PikaObj* self, int stopBits) {
-    obj_setInt(self, "stopBits", stopBits);
-}
-
-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);
-}
-
-void PikaStdDevice_UART_writeBytes(PikaObj* self, uint8_t* data, int length) {
-    obj_setBytes(self, "writeData", data, length);
-    obj_runNativeMethod(self, "platformWriteBytes", NULL);
-}
-
 static pika_dev* _get_dev(PikaObj* self) {
     pika_dev* dev = PIKA_HAL_OBJ2DEV(self);
     if (NULL != dev) {
@@ -107,7 +17,7 @@ static pika_dev* _get_dev(PikaObj* self) {
     return dev;
 }
 
-void PikaStdDevice_UART_platformEnable(PikaObj* self) {
+void PikaStdDevice_UART_enable(PikaObj* self) {
     pika_dev* dev = _get_dev(self);
     if (NULL == dev) {
         __platform_printf("Error: open UART '%d' failed.\r\n",
@@ -163,23 +73,7 @@ void PikaStdDevice_UART_platformEnable(PikaObj* self) {
     }
 }
 
-void PikaStdDevice_UART_platformRead(PikaObj* self) {
-    int len = obj_getInt(self, "length");
-    obj_setBytes(self, "_readData", NULL, len + 1);
-    char* buff = (char*)obj_getBytes(self, "_readData");
-    pika_dev* dev = _get_dev(self);
-    int len_get = pika_hal_read(dev, buff, len);
-    buff[len_get] = 0;
-    obj_setStr(self, "readData", buff);
-}
-
-void PikaStdDevice_UART_platformWrite(PikaObj* self) {
-    char* data = obj_getStr(self, "writeData");
-    pika_dev* dev = _get_dev(self);
-    pika_hal_write(dev, data, strlen(data));
-}
-
-void PikaStdDevice_UART_platformDisable(PikaObj* self) {
+void PikaStdDevice_UART_disable(PikaObj* self) {
     pika_dev* dev = _get_dev(self);
     if (NULL == dev) {
         __platform_printf("Error: open UART '%d' failed.\r\n",
@@ -189,18 +83,94 @@ void PikaStdDevice_UART_platformDisable(PikaObj* self) {
     pika_hal_ioctl(dev, PIKA_HAL_IOCTL_DISABLE);
 }
 
-void PikaStdDevice_UART_platformReadBytes(PikaObj* self) {
-    int len = obj_getInt(self, "length");
+void PikaStdDevice_UART_init(PikaObj* self) {
+    /* const */
+    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, "SIGNAL_RX", PIKA_HAL_UART_EVENT_SIGNAL_RX);
+    obj_setInt(self, "SIGNAL_TX", PIKA_HAL_UART_EVENT_SIGNAL_TX);
+
+    obj_setInt(self, "STOP_BITS_1", PIKA_HAL_UART_STOP_BITS_1);
+    obj_setInt(self, "STOP_BITS_2", PIKA_HAL_UART_STOP_BITS_2);
+    obj_setInt(self, "STOP_BITS_1_5", PIKA_HAL_UART_STOP_BITS_1_5);
+    obj_setInt(self, "PARITY_NONE", PIKA_HAL_UART_PARITY_NONE);
+    obj_setInt(self, "PARITY_ODD", PIKA_HAL_UART_PARITY_ODD);
+    obj_setInt(self, "PARITY_EVEN", PIKA_HAL_UART_PARITY_EVEN);
+
+    /* default */
+    obj_setInt(self, "baudRate", 115200);
+    obj_setInt(self, "id", 1);
+    obj_setStr(self, "readBuff", "");
+    obj_setInt(self, "flowControl", PIKA_HAL_UART_FLOW_CONTROL_NONE);
+    obj_setStr(self, "TXpin", "none");
+    obj_setStr(self, "RXpin", "none");
+    obj_setStr(self, "RTSpin", "none");
+    obj_setStr(self, "CTSpin", "none");
+    obj_setInt(self, "dataBits", 8);
+    obj_setInt(self, "parity", PIKA_HAL_UART_PARITY_NONE);
+    obj_setInt(self, "stopBits", PIKA_HAL_UART_STOP_BITS_1);
+}
+
+void PikaStdDevice_UART___init__(PikaObj* self) {
+    PikaStdDevice_UART_init(self);
+}
+
+char* PikaStdDevice_UART_read(PikaObj* self, int length) {
+    int len = length;
+    obj_setBytes(self, "_readData", NULL, len + 1);
+    char* buff = (char*)obj_getBytes(self, "_readData");
+    pika_dev* dev = _get_dev(self);
+    int len_get = pika_hal_read(dev, buff, len);
+    buff[len_get] = 0;
+    obj_setStr(self, "readData", buff);
+    return obj_getStr(self, "readData");
+}
+
+Arg* PikaStdDevice_UART_readBytes(PikaObj* self, int length) {
+    int len = length;
     obj_setBytes(self, "_readData", NULL, len + 1);
     uint8_t* buff = obj_getBytes(self, "_readData");
     pika_dev* dev = _get_dev(self);
     int len_get = pika_hal_read(dev, buff, len);
     obj_setBytes(self, "readData", buff, len_get);
+    return arg_copy(obj_getArg(self, "readData"));
+}
+
+void PikaStdDevice_UART_setBaudRate(PikaObj* self, int baudRate) {
+    obj_setInt(self, "baudRate", baudRate);
 }
 
-void PikaStdDevice_UART_platformWriteBytes(PikaObj* self) {
-    uint8_t* data = obj_getBytes(self, "writeData");
-    int len = obj_getBytesSize(self, "writeData");
+void PikaStdDevice_UART_setFlowControl(PikaObj* self, int flowControl) {
+    obj_setInt(self, "flowControl", flowControl);
+}
+
+void PikaStdDevice_UART_setDataBits(PikaObj* self, int dataBits) {
+    obj_setInt(self, "dataBits", dataBits);
+}
+
+void PikaStdDevice_UART_setParity(PikaObj* self, int parity) {
+    obj_setInt(self, "parity", parity);
+}
+
+void PikaStdDevice_UART_setStopBits(PikaObj* self, int stopBits) {
+    obj_setInt(self, "stopBits", stopBits);
+}
+
+void PikaStdDevice_UART_setId(PikaObj* self, int id) {
+    obj_setInt(self, "id", id);
+}
+
+void PikaStdDevice_UART_write(PikaObj* self, char* data) {
+    pika_dev* dev = _get_dev(self);
+    pika_hal_write(dev, data, strlen(data));
+}
+
+void PikaStdDevice_UART_writeBytes(PikaObj* self, uint8_t* data, int length) {
+    int len = length;
     pika_dev* dev = _get_dev(self);
     pika_hal_write(dev, data, len);
 }