From 368b5330f08178e5f2d97375e011dad1cfc198ff Mon Sep 17 00:00:00 2001 From: Richard Acayan Date: Fri, 3 Feb 2023 21:04:33 -0500 Subject: [PATCH] sensh: add support for generic sensor event Message ID 1025 is an event for "normal" sensors. Add support for logging this event. --- Makefile | 5 +++-- sensh.c | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c30197c..9523dec 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/sensh.c b/sensh.c index 032e8b5..359e598 100644 --- a/sensh.c +++ b/sensh.c @@ -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);