]> rtime.felk.cvut.cz Git - eurobot/public.git/blob - src/ulcdd/uoled.c
uoled: removed one comapilation time warning
[eurobot/public.git] / src / ulcdd / uoled.c
1 #include <sercom.h>
2
3 #include <oledlib.h>
4 #include <string.h>
5 #include <fcntl.h>
6 #include <signal.h>
7 #include <unistd.h>
8 #include <stdlib.h>
9 #include <stdio.h>
10 #include <robottype.h>
11 #include <robottype_eb2008.h>
12 #include "uoled.h"
13 #include "uoled_config.h"
14
15 #ifdef CONFIG_DEBUG_UOLED
16 #define DEBUG
17 #endif
18
19 static struct sercom_data sercom;
20
21 struct sercom_data* uoled_init(void(*sighandler)(int)) 
22 {
23         strcpy((char *)&sercom.devname, CONFIG_UOLED_TTY);
24         sercom.baudrate = 2400;
25         sercom.parity = SERCOM_PARNONE;
26         sercom.databits = 8;
27         sercom.stopbits = 1;
28         sercom.mode = 0;
29         sercom.sighandler = sighandler;
30         sercom_open(&sercom);
31         return &sercom;
32 }
33
34 int uoled_write_cmd(uint8_t *buff, int size) 
35 {
36         int ret;
37         
38 #ifdef DEBUG
39         int i;
40         printf("sending command: ");
41         for(i=0; i<size; i++)
42                 printf("%d ",buff[i]);
43         printf("\n");
44 #endif
45         
46         ret = write(sercom.fd, buff, size);
47         if(ret != size) {
48                 printf("uoled: WRITE FAILED!!!!!!!!!!!!!!!\n");
49                 return -1;
50         }
51         
52         return 0;
53 }
54
55 int uoled_switch_mode_rep(uint8_t mode, uint8_t status) 
56 {
57         uint8_t ret;
58         uint8_t msg[SWITCH_MODE_MSG_SIZE];
59         
60         oled_switch_mode(msg, SWITCH_MODE_MSG_SIZE, mode, status);
61
62         ret = uoled_write_cmd(msg, SWITCH_MODE_MSG_SIZE);
63         if(ret)
64                 return -1;
65         
66         return 0;
67
68 }
69
70 int uoled_set_balls(uint8_t *balls) 
71 {
72         uint8_t ret;
73         uint8_t msg[BALLS_MSG_SIZE];
74         
75         oled_set_balls(msg, BALLS_MSG_SIZE, balls);
76
77         ret = uoled_write_cmd(msg, BALLS_MSG_SIZE);
78         if(ret)
79                 return -1;
80         
81         return 0;
82
83 }
84
85 int uoled_send_voltage(struct pwr_voltage_type *volt) 
86 {
87         int ret;
88         uint8_t msg[VOLTAGE_MSG_SIZE];
89
90         oled_send_voltage(msg, VOLTAGE_MSG_SIZE, volt);
91
92         ret = uoled_write_cmd(msg, VOLTAGE_MSG_SIZE);
93         if(ret)
94                 return -1;
95
96         return 0;
97 }
98
99 int uoled_set_color(uint8_t color) 
100 {
101         int ret;
102         uint8_t msg[COLOR_MSG_SIZE];
103
104         oled_set_color(msg, COLOR_MSG_SIZE, color);
105
106         ret = uoled_write_cmd(msg, COLOR_MSG_SIZE);
107         if(ret)
108                 return -1;
109
110         return 0;
111 }
112
113 int uoled_send_position(struct est_pos_type *pos) 
114 {
115         int ret;
116         uint8_t msg[POSITION_MSG_SIZE];
117
118         oled_send_position(msg, POSITION_MSG_SIZE, pos);
119
120         ret = uoled_write_cmd(msg, POSITION_MSG_SIZE);
121         if(ret)
122                 return -1;
123
124         return 0;
125 }
126
127
128 int uoled_send_hw_status(uint8_t *status) 
129 {
130         int ret;
131         uint8_t msg[HW_STATUS_MSG_SIZE];
132
133         oled_send_hw_status(msg, HW_STATUS_MSG_SIZE, status);
134
135         ret = uoled_write_cmd(msg, HW_STATUS_MSG_SIZE);
136         if(ret)
137                 return -1;
138
139         return 0;
140 }
141 int uoled_send_state(const char *name, int len)
142 {
143         int ret;
144         uint8_t msg[len+2];
145
146         oled_send_fsm_state(msg, len+3, name, len);
147
148         ret = uoled_write_cmd(msg, len+3);
149
150         if(ret)
151                 return -1;
152
153         return 0;
154 }
155