summaryrefslogtreecommitdiff
path: root/src/venus_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/venus_api.c')
-rw-r--r--src/venus_api.c26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/venus_api.c b/src/venus_api.c
index c1ae5d4..839d9ed 100644
--- a/src/venus_api.c
+++ b/src/venus_api.c
@@ -107,6 +107,16 @@ void venus_msg_data_free(struct venus_msg *msg)
msg->data = NULL;
}
+void venus_msg_free(struct venus_msg *msg)
+{
+ if (!msg) {
+ return;
+ }
+
+ venus_msg_data_free(msg);
+ free(msg);
+}
+
uint8_t venus_checksum(void *data, uint16_t len)
{
int i;
@@ -384,36 +394,34 @@ int venus_conf_format(int fd, uint8_t type, uint8_t attr)
return 0;
}
-int venus_query_sw_version(int fd, uint8_t type)
+int venus_query_sw_version(int fd, uint8_t type, struct venus_msg *msg)
{
int err;
uint8_t data[2];
- struct venus_msg msg;
data[0] = ID_QUERY_SW_VERSION;
data[1] = type;
- msg.data = data;
- msg.len = sizeof(data);
- err = venus_write_msg(fd, &msg);
+ msg->data = data;
+ msg->len = sizeof(data);
+ err = venus_write_msg(fd, msg);
if (err < 0) {
log_error("venus_write_msg: %d", err);
return -1;
}
- err = venus_read_msg(fd, &msg);
+ err = venus_read_msg(fd, msg);
if (err < 0) {
log_error("venus_read_msg: %d", err);
return -1;
}
- venus_msg_data_free(&msg);
+ venus_msg_data_free(msg);
- err = venus_read_msg(fd, &msg);
+ err = venus_read_msg(fd, msg);
if (err < 0) {
log_error("venus_read_msg: %d", err);
return -1;
}
- venus_msg_data_free(&msg);
return 0;
}