From 7b793150f96a6fe6033ac1390a663b1b62be2df6 Mon Sep 17 00:00:00 2001 From: Jeremy Kerr Date: Wed, 18 Sep 2013 11:03:17 +0800 Subject: [PATCH] types: Add device_type to struct device Signed-off-by: Jeremy Kerr --- lib/pb-protocol/pb-protocol.c | 10 ++++++++++ lib/types/types.h | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/pb-protocol/pb-protocol.c b/lib/pb-protocol/pb-protocol.c index bcc7230..681b250 100644 --- a/lib/pb-protocol/pb-protocol.c +++ b/lib/pb-protocol/pb-protocol.c @@ -22,6 +22,7 @@ * action = 0x1: device add message * payload: * 4-byte len, id + * 1-byte type * 4-byte len, name * 4-byte len, description * 4-byte len, icon_file @@ -166,6 +167,7 @@ static int optional_strlen(const char *str) int pb_protocol_device_len(const struct device *dev) { return 4 + optional_strlen(dev->id) + + sizeof(dev->type) + 4 + optional_strlen(dev->name) + 4 + optional_strlen(dev->description) + 4 + optional_strlen(dev->icon_file); @@ -209,6 +211,8 @@ int pb_protocol_serialise_device(const struct device *dev, char *pos = buf; pos += pb_protocol_serialise_string(pos, dev->id); + *(enum device_type *)pos = dev->type; + pos += sizeof(enum device_type); pos += pb_protocol_serialise_string(pos, dev->name); pos += pb_protocol_serialise_string(pos, dev->description); pos += pb_protocol_serialise_string(pos, dev->icon_file); @@ -384,6 +388,12 @@ int pb_protocol_deserialise_device(struct device *dev, if (read_string(dev, &pos, &len, &dev->id)) goto out; + if (len < sizeof(enum device_type)) + goto out; + dev->type = *(enum device_type *)(pos); + pos += sizeof(enum device_type); + len -= sizeof(enum device_type); + if (read_string(dev, &pos, &len, &dev->name)) goto out; diff --git a/lib/types/types.h b/lib/types/types.h index 9fed7aa..bb4b23c 100644 --- a/lib/types/types.h +++ b/lib/types/types.h @@ -4,8 +4,16 @@ #include #include +enum device_type { + DEVICE_TYPE_NETWORK, + DEVICE_TYPE_DISK, + DEVICE_TYPE_OPTICAL, + DEVICE_TYPE_UNKNOWN, +}; + struct device { char *id; + enum device_type type; char *name; char *description; char *icon_file; -- 2.39.2