MESSAGE_CMD_BYE, /* to notify explicitly closing connection */
} message_cmd_e;
+struct __message_type_s {
+ unsigned long long int seq_num;
+ message_cmd_e cmd;
+ int servo;
+ int speed;
+ unsigned long long int time; /* to be used to order messages */
+};
typedef struct __message_type_s message_s;
int message_new(message_cmd_e cmd, int servo, int speed, message_s *new_msg);
void message_reset_seq_num(void);
-/* To encapsulate message struction,
- * we need to discuss about it.
- * which one is better, hiding its members or direct accessing its members?
- */
-int message_get_seq_num(message_s *msg, unsigned long long int *seq_num);
-int message_get_cmd(message_s *msg, message_cmd_e *cmd);
-int message_get_speed_value(message_s *msg, int *speed);
-int message_get_servo_value(message_s *msg, int *servo);
+int message_queue_new(void);
+void message_queue_clear(void);
+
+void message_push_to_inqueue(message_s *msg);
+message_s *message_pop_from_inqueue(void);
+
+void message_push_to_outqueue(message_s *msg);
+message_s *message_pop_from_outqueue(void);
#endif /* __CAR_APP_MESSAGE_H__ */
#include <time.h>
#include <limits.h>
+#include <stdlib.h>
+#include <glib.h>
+
#include "log.h"
#include "message.h"
-struct __message_type_s {
- unsigned long long int seq_num;
- message_cmd_e cmd;
- int servo;
- int speed;
- unsigned long long int time; /* to be used to order messages */
-};
-
static unsigned long long int sequence_number = 0;
+static GQueue inqueue = G_QUEUE_INIT;
+static GQueue outqueue = G_QUEUE_INIT;
static unsigned long long int __message_get_monotonic_time(void)
{