sensh: add support for generic sensor event

Message ID 1025 is an event for "normal" sensors. Add support for
logging this event.
This commit is contained in:
Richard Acayan
2023-02-03 21:04:33 -05:00
parent a93a5ce171
commit 368b5330f0
2 changed files with 27 additions and 2 deletions

View File

@@ -25,8 +25,8 @@ LIBS = -lprotobuf-c -lqrtr
CFLAGS = -Wall -Wextra -Wpedantic -Ibuild -I.
PROTOC_C = protoc-c
build/sensh: build/sensh.o build/qmi_sns_client.o build/sns_client_event_msg.pb-c.o build/sns_client_request_msg.pb-c.o build/sns_proximity_event.pb-c.o build/sns_std_attr_event.pb-c.o build/sns_std_attr_req.pb-c.o build/sns_std_suid.pb-c.o build/sns_suid_event.pb-c.o build/sns_suid_req.pb-c.o
$(CC) -o build/sensh build/sensh.o build/qmi_sns_client.o build/sns_client_event_msg.pb-c.o build/sns_client_request_msg.pb-c.o build/sns_proximity_event.pb-c.o build/sns_std_attr_event.pb-c.o build/sns_std_attr_req.pb-c.o build/sns_std_suid.pb-c.o build/sns_suid_event.pb-c.o build/sns_suid_req.pb-c.o $(LIBS)
build/sensh: build/sensh.o build/qmi_sns_client.o build/sns_client_event_msg.pb-c.o build/sns_client_request_msg.pb-c.o build/sns_proximity_event.pb-c.o build/sns_std_attr_event.pb-c.o build/sns_std_attr_req.pb-c.o build/sns_std_sensor_event.pb-c.o build/sns_std_suid.pb-c.o build/sns_suid_event.pb-c.o build/sns_suid_req.pb-c.o
$(CC) -o build/sensh build/sensh.o build/qmi_sns_client.o build/sns_client_event_msg.pb-c.o build/sns_client_request_msg.pb-c.o build/sns_proximity_event.pb-c.o build/sns_std_attr_event.pb-c.o build/sns_std_attr_req.pb-c.o build/sns_std_sensor_event.pb-c.o build/sns_std_suid.pb-c.o build/sns_suid_event.pb-c.o build/sns_suid_req.pb-c.o $(LIBS)
build/qmi_%.d: build/qmi_%.c
$(CC) $(CFLAGS) -MM -MT build/$*.o -o $@ $<
@@ -59,6 +59,7 @@ include build/sns_client_request_msg.pb-c.d
include build/sns_proximity_event.pb-c.d
include build/sns_std_attr_event.pb-c.d
include build/sns_std_attr_req.pb-c.d
include build/sns_std_sensor_event.pb-c.d
include build/sns_std_suid.pb-c.d
include build/sns_suid_event.pb-c.d
include build/sns_suid_req.pb-c.d

24
sensh.c
View File

@@ -58,6 +58,7 @@
#include "sns_proximity_event.pb-c.h"
#include "sns_std_attr_req.pb-c.h"
#include "sns_std_attr_event.pb-c.h"
#include "sns_std_sensor_event.pb-c.h"
#define SHELL_POLL 0
#define QRTR_POLL 1
@@ -125,6 +126,7 @@ void sns_handle_suid_event(struct qrtr_client_ctx *ctx, const void *payload, siz
void sns_handle_cal_event(struct qrtr_client_ctx *ctx, const void *payload, size_t payload_len);
void sns_handle_attr_event(struct qrtr_client_ctx *ctx, const void *payload, size_t payload_len);
void sns_handle_proximity_event(struct qrtr_client_ctx *ctx, const void *payload, size_t payload_len);
void sns_handle_sensor_event(struct qrtr_client_ctx *ctx, const void *payload, size_t payload_len);
void sns_handle_unknown_event(struct qrtr_client_ctx *ctx, int msgid, const void *payload, size_t payload_len);
void sns_handle_event(struct qrtr_client_ctx *ctx, const void *buf, size_t len);
@@ -227,6 +229,8 @@ void sns_handle_event(struct qrtr_client_ctx *ctx, const void *buf, size_t len)
sns_handle_attr_event(ctx, msg->events[i]->payload.data, msg->events[i]->payload.len);
else if (msg->events[i]->msg_id == 769)
sns_handle_proximity_event(ctx, msg->events[i]->payload.data, msg->events[i]->payload.len);
else if (msg->events[i]->msg_id == 1025) // SNS_STD_SENSOR_MSGID_SNS_STD_SENSOR_EVENT
sns_handle_sensor_event(ctx, msg->events[i]->payload.data, msg->events[i]->payload.len);
else
sns_handle_unknown_event(ctx, msg->events[i]->msg_id, msg->events[i]->payload.data, msg->events[i]->payload.len);
}
@@ -305,6 +309,26 @@ void sns_handle_proximity_event(struct qrtr_client_ctx *ctx, const void *payload
sns_proximity_event__free_unpacked(event, NULL);
}
void sns_handle_sensor_event(struct qrtr_client_ctx *ctx, const void *payload, size_t payload_len) {
SnsStdSensorEvent *event;
int i;
event = sns_std_sensor_event__unpack(NULL, payload_len, payload);
printf("sensh: sensor data: ");
for (i = 0; i < event->n_data; i++) {
printf("%f", event->data[i]);
if (i + 1 < event->n_data)
printf(", ");
}
putchar('\n');
sns_std_sensor_event__free_unpacked(event, NULL);
}
void sns_handle_unknown_event(struct qrtr_client_ctx *ctx, int msgid, const void *payload, size_t payload_len) {
printf("sensh: received unknown event %d, raw: ", msgid);