PsiSwarm Library  0.8
psiswarm.h
1 /* University of York Robotics Laboratory PsiSwarm Library: PsiSwarm C++ Core Header File
2  *
3  * Copyright 2016 University of York
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
7  * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS
8  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9  * See the License for the specific language governing permissions and limitations under the License.
10  *
11  * File: psiswarm.h
12  *
13  * (C) Dept. Electronics & Computer Science, University of York
14  * James Hilder, Alan Millard, Alexander Horsfield, Homero Elizondo, Jon Timmis
15  *
16  * PsiSwarm Library Version: 0.8
17  *
18  * October 2016
19  *
20  *
21  */
22 
23 #ifndef PSISWARM_H
24 #define PSISWARM_H
25 
26 #define SOFTWARE_VERSION_CODE 0.80
27 
28 #define PIC_ADDRESS 0x30
29 #define LCD_ADDRESS 0x7C
30 #define LED_IC_ADDRESS 0x42
31 #define GPIO_IC_ADDRESS 0x40
32 #define AUX_IC_ADDRESS 0x4E
33 #define ADC1_ADDRESS 0x46
34 #define ADC2_ADDRESS 0x48
35 #define EEPROM_ADDRESS 0XA0
36 #define TEMPERATURE_ADDRESS 0X30
37 #define BASE_COLOUR_ADDRESS 0X52
38 #define TOP_COLOUR_ADDRESS 0X72
39 #define ULTRASONIC_ADDRESS 0XE0
40 #define COMMAND_MESSAGE_BYTE 0X1D
41 #define ACKNOWLEDGE_MESSAGE_BYTE 0X1E
42 #define RESPONSE_MESSAGE_BYTE 0X1F
43 #define PSI_BYTE 0X1D
44 
45 //Set temperature sensor warnings: 60C critical, 50C high, 0C low
46 #define TEMPERATURE_CRITICAL_HI 0X03
47 #define TEMPEARTURE_CRITICAL_LO 0XC0
48 #define TEMPERATURE_HIGH_HI 0X03
49 #define TEMPEARTURE_HIGH_LO 0X20
50 #define TEMPERATURE_LOW_HI 0X00
51 #define TEMPEARTURE_LOW_LO 0X00
52 
53 #define DEFAULT_IR_PULSE_DELAY 400
54 #define DEFAULT_BASE_IR_PULSE_DELAY 50
55 
56 #include <stdio.h>
57 #include <stdarg.h>
58 #include <string>
59 #include <vector>
60 
61 #include "settings.h"
62 #include "serial.h"
63 #include "mbed.h"
64 #include "display.h"
65 #include "led.h"
66 #include "i2c_setup.h"
67 #include "motors.h"
68 #include "sensors.h"
69 #include "eprom.h"
70 #include "colour.h"
71 #include "sound.h"
72 #include "demo.h"
73 #include "animations.h"
74 #include "basic.h"
75 
76 //NB The user needs to have a main.cpp with a main() function and a handle_switch_event(char) function
77 #include "main.h"
78 
98 class Psiswarm
99 {
100 public:
106  void init(void);
107 
113  float get_uptime(void);
114 
120  void pause_user_code(float period);
121 
125  void reset_encoders(void);
126 
132  void debug(const char* format, ...) ;
133 private:
134  void IF_end_pause_user_code(void);
135  void IF_handle_events(void);
136  void IF_update_encoders(void);
137  void IF_update_user_id(void);
138  void IF_update_switch(void);
139  void IF_update_minutes(void);
140  void IF_get_hardware_description(void);
141 };
142 
143 extern Psiswarm psi;
144 extern Serial pc;
145 extern Serial bt;
146 extern Display display;
147 extern Motors motors;
148 extern Eprom eprom;
149 extern Led led;
150 extern Sensors sensors;
151 extern SerialControl serial;
152 extern Sound sound;
153 extern Setup i2c_setup;
154 extern Demo demo;
155 extern Animations animations;
156 extern Basic basic;
157 extern char * program_name;
158 extern char * author_name;
159 extern char * version_name;
160 
161 extern I2C primary_i2c;
162 extern InterruptIn gpio_interrupt;
163 
164 extern AnalogIn vin_current;
165 extern AnalogIn vin_battery;
166 extern AnalogIn vin_dc;
167 
168 extern DigitalOut mbed_led1;
169 extern DigitalOut mbed_led2;
170 extern DigitalOut mbed_led3;
171 extern DigitalOut mbed_led4;
172 extern PwmOut center_led_red;
173 extern PwmOut center_led_green;
174 extern PwmOut motor_left_f;
175 extern PwmOut motor_left_r;
176 extern PwmOut motor_right_f;
177 extern PwmOut motor_right_r;
178 
179 extern char time_based_motor_action;
180 
181 extern int base_colour_sensor_raw_values [];
182 extern int top_colour_sensor_raw_values [];
183 
184 extern char waiting_for_ultrasonic;
185 extern int ultrasonic_distance;
186 extern char ultrasonic_distance_updated;
187 extern Timeout ultrasonic_timeout;
188 extern Ticker ultrasonic_ticker;
189 
190 extern unsigned short background_ir_values [];
191 extern unsigned short illuminated_ir_values [];
192 extern float reflected_ir_distances [];
193 extern char ir_values_stored;
194 
195 extern char firmware_bytes[];
196 
197 extern char testing_voltage_regulators_flag;
198 extern char power_good_motor_left;
199 extern char power_good_motor_right;
200 extern char power_good_infrared;
201 extern char status_dc_in;
202 extern char status_charging;
203 
204 extern unsigned short background_base_ir_values [];
205 extern unsigned short illuminated_base_ir_values [];
206 extern char base_ir_values_stored;
207 extern float line_position;
208 extern char line_found;
209 
210 extern float motor_left_speed;
211 extern float motor_right_speed;
212 extern char motor_left_brake;
213 extern char motor_right_brake;
214 
215 extern float center_led_brightness;
216 extern float backlight_brightness;
217 
218 extern char use_motor_calibration;
219 extern char motor_calibration_set;
220 extern float left_motor_calibration_value;
221 extern float right_motor_calibration_value;
222 
223 extern float firmware_version;
224 extern float pcb_version;
225 extern float serial_number;
226 
227 extern char has_compass;
228 extern char has_side_ir;
229 extern char has_base_ir;
230 extern char has_base_colour_sensor;
231 extern char has_top_colour_sensor;
232 extern char has_wheel_encoders;
233 extern char has_audio_pic;
234 extern char has_ultrasonic_sensor;
235 extern char has_temperature_sensor;
236 extern char has_recharging_circuit;
237 extern char has_433_radio;
238 
239 extern int ir_pulse_delay;
240 extern int base_ir_pulse_delay;
241 
242 extern char robot_id;
243 extern char previous_robot_id;
244 
245 extern char wheel_encoder_byte;
246 extern char previous_wheel_encoder_byte;
247 extern signed int left_encoder;
248 extern signed int right_encoder;
249 
250 extern char switch_byte;
251 extern char previous_switch_byte;
252 
253 extern char user_code_running;
254 extern char user_code_restore_mode;
255 extern char demo_on;
256 extern char event;
257 extern char change_id_event;
258 extern char encoder_event;
259 extern char switch_event;
260 extern char system_warnings;
261 
262 extern char debug_mode;
263 extern char debug_output;
264 
265 extern vector<string> basic_filenames;
266 extern char psi_basic_file_count;
267 extern char use_flash_basic;
268 extern char file_transfer_mode;
269 
270 #endif
Definition: sound.h:32
Definition: demo.h:36
float get_uptime(void)
Definition: psiswarm.cpp:339
Definition: motors.h:46
void init(void)
Definition: psiswarm.cpp:169
Definition: led.h:42
Header file containing PsiSwarm define headings.
void pause_user_code(float period)
Definition: psiswarm.cpp:344
Definition: eprom.h:41
void debug(const char *format,...)
Definition: psiswarm.cpp:325
void reset_encoders(void)
Definition: psiswarm.cpp:319
Definition: basic.h:29