fix readBytes memory error

This commit is contained in:
lyon 2022-05-24 15:26:12 +08:00
parent 49589ed009
commit a7613dd097
12 changed files with 62 additions and 52 deletions

View File

@ -46,7 +46,7 @@ char* PikaStdDevice_CAN_read(PikaObj* self, int length) {
Arg* PikaStdDevice_CAN_readBytes(PikaObj *self, int length){
obj_setInt(self, "length", length);
obj_runNativeMethod(self, "platformReadBytes", NULL);
return obj_getArg(self, "readData");
return arg_copy(obj_getArg(self, "readData"));
}
void PikaStdDevice_CAN_write(PikaObj* self, char* data) {

View File

@ -57,7 +57,7 @@ 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 obj_getArg(self, "readData");
return arg_copy(obj_getArg(self, "readData"));
}
void PikaStdDevice_IIC_platformWrite(PikaObj* self) {

View File

@ -25,7 +25,7 @@ void PikaStdDevice_SPI_write(PikaObj* self, char* data) {
obj_runNativeMethod(self, "platformWrite", NULL);
}
void PikaStdDevice_SPI_writeBytes(PikaObj *self, uint8_t* data, int length){
void PikaStdDevice_SPI_writeBytes(PikaObj* self, uint8_t* data, int length) {
obj_setBytes(self, "writeData", data, length);
obj_runNativeMethod(self, "platformWriteBytes", NULL);
}
@ -36,10 +36,10 @@ char* PikaStdDevice_SPI_read(PikaObj* self, int length) {
return obj_getStr(self, "readData");
}
Arg* PikaStdDevice_SPI_readBytes(PikaObj *self, int length){
Arg* PikaStdDevice_SPI_readBytes(PikaObj* self, int length) {
obj_setInt(self, "length", length);
obj_runNativeMethod(self, "platformReadBytes", NULL);
return obj_getArg(self, "readData");
return arg_copy(obj_getArg(self, "readData"));
}
void PikaStdDevice_SPI_setBaudRate(PikaObj* self, int baudRate) {
@ -94,13 +94,12 @@ void PikaStdDevice_SPI_platformRead(PikaObj* self) {
obj_setSysOut(self, "[error] platform method need to be override.");
}
void PikaStdDevice_SPI_platformWriteBytes(PikaObj *self){
void PikaStdDevice_SPI_platformWriteBytes(PikaObj* self) {
obj_setErrorCode(self, 1);
obj_setSysOut(self, "[error] platform method need to be override.");
}
void PikaStdDevice_SPI_platformReadBytes(PikaObj *self){
void PikaStdDevice_SPI_platformReadBytes(PikaObj* self) {
obj_setErrorCode(self, 1);
obj_setSysOut(self, "[error] platform method need to be override.");
}

View File

@ -28,7 +28,7 @@ char* PikaStdDevice_UART_read(PikaObj* self, int length) {
Arg* PikaStdDevice_UART_readBytes(PikaObj *self, int length){
obj_setInt(self, "length", length);
obj_runNativeMethod(self, "platformReadBytes", NULL);
return obj_getArg(self, "readData");
return arg_copy(obj_getArg(self, "readData"));
}
void PikaStdDevice_UART_setBaudRate(PikaObj* self, int baudRate) {

View File

@ -1,20 +1,13 @@
#include "TemplateDevice_UART.h"
void TemplateDevice_UART_platformDisable(PikaObj *self){
void TemplateDevice_UART_platformDisable(PikaObj* self) {}
void TemplateDevice_UART_platformEnable(PikaObj* self) {}
void TemplateDevice_UART_platformRead(PikaObj* self) {}
void TemplateDevice_UART_platformReadBytes(PikaObj* self) {
int length = obj_getInt(self, "length");
uint8_t bytes_buff[] = {0x00, 0x01, 0x02, 0x03, 0x04,
0x05, 0x06, 0x07, 0x08};
obj_setBytes(self, "readData", bytes_buff, length);
}
void TemplateDevice_UART_platformEnable(PikaObj *self){
}
void TemplateDevice_UART_platformRead(PikaObj *self){
}
void TemplateDevice_UART_platformReadBytes(PikaObj *self){
}
void TemplateDevice_UART_platformWrite(PikaObj *self){
}
void TemplateDevice_UART_platformWriteBytes(PikaObj *self){
}
void TemplateDevice_UART_platformWrite(PikaObj* self) {}
void TemplateDevice_UART_platformWriteBytes(PikaObj* self) {}

View File

@ -0,0 +1,24 @@
import TemplateDevice
def EXPECT_EQ(test_name, input, expected):
print('-----TEST-----')
print(test_name)
if input != expected:
print('[Error]')
print(test_name)
print('[info] Expected:')
print(expected)
print('[info] Input:')
print(input)
# error
while True:
is_error = 1
else:
print('[ OK ]')
def test():
uart = TemplateDevice.UART()
uart.setId(1)
uart.setBaudRate(115200)
bt = uart.readBytes(5)
EXPECT_EQ('uart.readBytes', bt, b'\x00\x01\x02\x03\x04')

View File

@ -11,3 +11,5 @@ import TempDevTest as dev
import TemplateDevice
print('hello pikascript!')
dev.test()

View File

@ -46,7 +46,7 @@ char* PikaStdDevice_CAN_read(PikaObj* self, int length) {
Arg* PikaStdDevice_CAN_readBytes(PikaObj *self, int length){
obj_setInt(self, "length", length);
obj_runNativeMethod(self, "platformReadBytes", NULL);
return obj_getArg(self, "readData");
return arg_copy(obj_getArg(self, "readData"));
}
void PikaStdDevice_CAN_write(PikaObj* self, char* data) {

View File

@ -57,7 +57,7 @@ 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 obj_getArg(self, "readData");
return arg_copy(obj_getArg(self, "readData"));
}
void PikaStdDevice_IIC_platformWrite(PikaObj* self) {

View File

@ -25,7 +25,7 @@ void PikaStdDevice_SPI_write(PikaObj* self, char* data) {
obj_runNativeMethod(self, "platformWrite", NULL);
}
void PikaStdDevice_SPI_writeBytes(PikaObj *self, uint8_t* data, int length){
void PikaStdDevice_SPI_writeBytes(PikaObj* self, uint8_t* data, int length) {
obj_setBytes(self, "writeData", data, length);
obj_runNativeMethod(self, "platformWriteBytes", NULL);
}
@ -36,10 +36,10 @@ char* PikaStdDevice_SPI_read(PikaObj* self, int length) {
return obj_getStr(self, "readData");
}
Arg* PikaStdDevice_SPI_readBytes(PikaObj *self, int length){
Arg* PikaStdDevice_SPI_readBytes(PikaObj* self, int length) {
obj_setInt(self, "length", length);
obj_runNativeMethod(self, "platformReadBytes", NULL);
return obj_getArg(self, "readData");
return arg_copy(obj_getArg(self, "readData"));
}
void PikaStdDevice_SPI_setBaudRate(PikaObj* self, int baudRate) {
@ -94,13 +94,12 @@ void PikaStdDevice_SPI_platformRead(PikaObj* self) {
obj_setSysOut(self, "[error] platform method need to be override.");
}
void PikaStdDevice_SPI_platformWriteBytes(PikaObj *self){
void PikaStdDevice_SPI_platformWriteBytes(PikaObj* self) {
obj_setErrorCode(self, 1);
obj_setSysOut(self, "[error] platform method need to be override.");
}
void PikaStdDevice_SPI_platformReadBytes(PikaObj *self){
void PikaStdDevice_SPI_platformReadBytes(PikaObj* self) {
obj_setErrorCode(self, 1);
obj_setSysOut(self, "[error] platform method need to be override.");
}

View File

@ -28,7 +28,7 @@ char* PikaStdDevice_UART_read(PikaObj* self, int length) {
Arg* PikaStdDevice_UART_readBytes(PikaObj *self, int length){
obj_setInt(self, "length", length);
obj_runNativeMethod(self, "platformReadBytes", NULL);
return obj_getArg(self, "readData");
return arg_copy(obj_getArg(self, "readData"));
}
void PikaStdDevice_UART_setBaudRate(PikaObj* self, int baudRate) {

View File

@ -1,20 +1,13 @@
#include "TemplateDevice_UART.h"
void TemplateDevice_UART_platformDisable(PikaObj *self){
void TemplateDevice_UART_platformDisable(PikaObj* self) {}
void TemplateDevice_UART_platformEnable(PikaObj* self) {}
void TemplateDevice_UART_platformRead(PikaObj* self) {}
void TemplateDevice_UART_platformReadBytes(PikaObj* self) {
int length = obj_getInt(self, "length");
uint8_t bytes_buff[] = {0x00, 0x01, 0x02, 0x03, 0x04,
0x05, 0x06, 0x07, 0x08};
obj_setBytes(self, "readData", bytes_buff, length);
}
void TemplateDevice_UART_platformEnable(PikaObj *self){
}
void TemplateDevice_UART_platformRead(PikaObj *self){
}
void TemplateDevice_UART_platformReadBytes(PikaObj *self){
}
void TemplateDevice_UART_platformWrite(PikaObj *self){
}
void TemplateDevice_UART_platformWriteBytes(PikaObj *self){
}
void TemplateDevice_UART_platformWrite(PikaObj* self) {}
void TemplateDevice_UART_platformWriteBytes(PikaObj* self) {}