summaryrefslogtreecommitdiffstats
path: root/meif.c
diff options
context:
space:
mode:
Diffstat (limited to 'meif.c')
-rw-r--r--meif.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/meif.c b/meif.c
index 0fdf813..8d99a27 100644
--- a/meif.c
+++ b/meif.c
@@ -108,6 +108,31 @@ void meif_message_log(struct meif_message *meif_message)
hex_dump(meif_message->data, meif_message->length);
}
+int meif_dispatch(struct meif_message *meif_message)
+{
+ struct meif_config_values *config_values;
+
+ switch(meif_message->command) {
+ case MEIF_ACK_MSG:
+ printf("Got an ACK message\n\n");
+ break;
+ case MEIF_NACK_MSG:
+ printf("Got a NACK message\n\n");
+ break;
+ case MEIF_STATE_REPORT_MSG:
+ printf("Got a STATE_REPORT message\n\n");
+ break;
+ case MEIF_CONFIG_VALUES_MSG:
+ if(meif_message->data != NULL && meif_message->length >= sizeof(struct meif_config_values)) {
+ config_values = (struct meif_config_values *) meif_message->data;
+ printf("Got config values:\n\tvendor: %s\n\tproduct: %s\n\n", config_values->vendor, config_values->product);
+ }
+ break;
+ }
+
+ return 0;
+}
+
void meif_read_loop(int fd)
{
void *data = NULL;
@@ -234,7 +259,9 @@ void meif_read_loop(int fd)
if(meif_message != NULL) {
meif_message_log(meif_message);
- // TODO: dispatch
+ rc = meif_dispatch(meif_message);
+ if(rc < 0)
+ run = 0;
meif_message_free(meif_message);
}
}