+#include <assert.h>
#include <string.h>
#include <stdint.h>
#include <asm/byteorder.h>
* 4-byte len, id
*/
+int pb_protocol_device_cmp(const struct device *a, const struct device *b)
+{
+ return !strcmp(a->id, b->id);
+}
+
+int pb_protocol_boot_option_cmp(const struct boot_option *a,
+ const struct boot_option *b)
+{
+ return !strcmp(a->id, b->id);
+}
/* Write a string into the buffer, starting at pos.
*
* @param[out] str Pointer to resuling string
* @return zero on success, non-zero on failure
*/
-static int read_string(void *ctx, char **pos, int *len, char **str)
+static int read_string(void *ctx, const char **pos, unsigned int *len,
+ char **str)
{
uint32_t str_len, read_len;
}
char *pb_protocol_deserialise_string(void *ctx,
- struct pb_protocol_message *message)
+ const struct pb_protocol_message *message)
{
- char *buf, *str;
- int len;
+ const char *buf;
+ char *str;
+ unsigned int len;
len = message->payload_len;
buf = message->payload;
return strlen(str);
}
-int pb_protocol_device_len(struct device *dev)
+int pb_protocol_device_len(const struct device *dev)
{
struct boot_option *opt;
int len;
return len;
}
-int pb_protocol_serialise_device(struct device *dev, char *buf, int buf_len)
+int pb_protocol_serialise_device(const struct device *dev, char *buf, int buf_len)
{
struct boot_option *opt;
uint32_t n;
pos += pb_protocol_serialise_string(pos, opt->boot_args);
}
+ assert(pos <= buf + buf_len);
+
return 0;
}
}
struct pb_protocol_message *pb_protocol_create_message(void *ctx,
- int action, int payload_len)
+ enum pb_protocol_action action, int payload_len)
{
struct pb_protocol_message *message;
struct pb_protocol_message *pb_protocol_read_message(void *ctx, int fd)
{
struct pb_protocol_message *message, m;
- int rc, len;
+ int rc;
+ unsigned int len;
/* use the stack for the initial 8-byte read */
struct device *pb_protocol_deserialise_device(void *ctx,
- struct pb_protocol_message *message)
+ const struct pb_protocol_message *message)
{
struct device *dev;
- char *pos;
- int i, n_options, len;
+ const char *pos;
+ int i, n_options;
+ unsigned int len;
len = message->payload_len;
pos = message->payload;