|
|
@@ -1,9 +1,12 @@
|
|
|
#include "i2c_utils.h"
|
|
|
+#include "luat_malloc.h"
|
|
|
+
|
|
|
#define LUAT_LOG_TAG "i2c tools"
|
|
|
#include "luat_log.h"
|
|
|
|
|
|
-static char i2c_tools_data[I2C_TOOLS_BUFFER_SIZE] = {0};
|
|
|
void i2c_tools(const char * data,size_t len){
|
|
|
+ char *i2c_tools_data = (char *)luat_heap_malloc(len-8);
|
|
|
+ memset(i2c_tools_data, 0, len-8); // 确保填充为0
|
|
|
memcpy(i2c_tools_data, data+9, len-9);
|
|
|
char *command = strtok(i2c_tools_data, " ");
|
|
|
if (memcmp("send", command, 4) == 0){
|
|
|
@@ -20,10 +23,9 @@ void i2c_tools(const char * data,size_t len){
|
|
|
len++;
|
|
|
}
|
|
|
if(i2c_write(address, send_buff, len)!=1){
|
|
|
- LLOGI("[i2c] write to %s failed", address);
|
|
|
+ LLOGI("[i2c] write to 0x%02X failed", address);
|
|
|
}
|
|
|
}else if(memcmp("recv",command,4) == 0){
|
|
|
- uint8_t buffer[I2C_TOOLS_BUFFER_SIZE] = {0};
|
|
|
int i2c_id = atoi(strtok(NULL, " "));
|
|
|
i2c_init(i2c_id);
|
|
|
uint8_t address = strtonum(strtok(NULL, " "));
|
|
|
@@ -31,6 +33,8 @@ void i2c_tools(const char * data,size_t len){
|
|
|
uint8_t len = atoi(strtok(NULL, " "));
|
|
|
if (len == 0)
|
|
|
len == 1;
|
|
|
+ uint8_t *buffer = (uint8_t *)luat_heap_malloc(len);
|
|
|
+ memset(buffer, 0, len); // 确保填充为0
|
|
|
if( i2c_read(address, reg,buffer,len)!=1){
|
|
|
printf("[ ");
|
|
|
for(uint8_t i = 0; i < len; i++){
|
|
|
@@ -48,4 +52,5 @@ void i2c_tools(const char * data,size_t len){
|
|
|
}else{
|
|
|
i2c_help();
|
|
|
}
|
|
|
+ luat_heap_free(i2c_tools_data);
|
|
|
}
|