C++ Library for the PsiSwarm Robot - Version 0.8
Dependents: PsiSwarm_V8_Blank_CPP Autonomia_RndmWlk
Fork of PsiSwarmV7_CPP by
psiswarm.h@1:060690a934a9, 2016-03-03 (annotated)
- Committer:
- jah128
- Date:
- Thu Mar 03 23:21:47 2016 +0000
- Revision:
- 1:060690a934a9
- Parent:
- 0:d6269d17c8cf
- Child:
- 2:c6986ee3c7c5
Updated for web page;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jah128 | 0:d6269d17c8cf | 1 | /* University of York Robotics Laboratory PsiSwarm Library: PsiSwarm Core Header File |
jah128 | 0:d6269d17c8cf | 2 | * |
jah128 | 0:d6269d17c8cf | 3 | * File: psiswarm.h |
jah128 | 0:d6269d17c8cf | 4 | * |
jah128 | 0:d6269d17c8cf | 5 | * (C) Dept. Electronics & Computer Science, University of York |
jah128 | 0:d6269d17c8cf | 6 | * James Hilder, Alan Millard, Alexander Horsfield, Homero Elizondo, Jon Timmis |
jah128 | 0:d6269d17c8cf | 7 | * |
jah128 | 0:d6269d17c8cf | 8 | * PsiSwarm Library Version: 0.4 |
jah128 | 0:d6269d17c8cf | 9 | * |
jah128 | 0:d6269d17c8cf | 10 | * February 2016 |
jah128 | 0:d6269d17c8cf | 11 | * |
jah128 | 0:d6269d17c8cf | 12 | * |
jah128 | 0:d6269d17c8cf | 13 | */ |
jah128 | 0:d6269d17c8cf | 14 | |
jah128 | 0:d6269d17c8cf | 15 | #ifndef PSISWARM_H |
jah128 | 0:d6269d17c8cf | 16 | #define PSISWARM_H |
jah128 | 0:d6269d17c8cf | 17 | |
jah128 | 1:060690a934a9 | 18 | #define SOFTWARE_VERSION_CODE 0.40 |
jah128 | 0:d6269d17c8cf | 19 | |
jah128 | 0:d6269d17c8cf | 20 | #define PIC_ADDRESS 0x30 |
jah128 | 0:d6269d17c8cf | 21 | #define LCD_ADDRESS 0x7C |
jah128 | 0:d6269d17c8cf | 22 | #define LED_IC_ADDRESS 0x42 |
jah128 | 0:d6269d17c8cf | 23 | #define GPIO_IC_ADDRESS 0x40 |
jah128 | 0:d6269d17c8cf | 24 | #define AUX_IC_ADDRESS 0x4E |
jah128 | 0:d6269d17c8cf | 25 | #define ADC1_ADDRESS 0x46 |
jah128 | 0:d6269d17c8cf | 26 | #define ADC2_ADDRESS 0x48 |
jah128 | 0:d6269d17c8cf | 27 | #define EEPROM_ADDRESS 0XA0 |
jah128 | 0:d6269d17c8cf | 28 | #define TEMPERATURE_ADDRESS 0X30 |
jah128 | 0:d6269d17c8cf | 29 | #define BASE_COLOUR_ADDRESS 0X52 |
jah128 | 0:d6269d17c8cf | 30 | #define TOP_COLOUR_ADDRESS 0X72 |
jah128 | 0:d6269d17c8cf | 31 | #define ULTRASONIC_ADDRESS 0XE0 |
jah128 | 0:d6269d17c8cf | 32 | #define COMMAND_MESSAGE_BYTE 0X1D |
jah128 | 0:d6269d17c8cf | 33 | #define ACKNOWLEDGE_MESSAGE_BYTE 0X1E |
jah128 | 0:d6269d17c8cf | 34 | #define RESPONSE_MESSAGE_BYTE 0X1F |
jah128 | 0:d6269d17c8cf | 35 | #define PSI_BYTE 0X1D |
jah128 | 0:d6269d17c8cf | 36 | |
jah128 | 0:d6269d17c8cf | 37 | //Set temperature sensor warnings: 60C critical, 50C high, 0C low |
jah128 | 0:d6269d17c8cf | 38 | #define TEMPERATURE_CRITICAL_HI 0X03 |
jah128 | 0:d6269d17c8cf | 39 | #define TEMPEARTURE_CRITICAL_LO 0XC0 |
jah128 | 0:d6269d17c8cf | 40 | #define TEMPERATURE_HIGH_HI 0X03 |
jah128 | 0:d6269d17c8cf | 41 | #define TEMPEARTURE_HIGH_LO 0X20 |
jah128 | 0:d6269d17c8cf | 42 | #define TEMPERATURE_LOW_HI 0X00 |
jah128 | 0:d6269d17c8cf | 43 | #define TEMPEARTURE_LOW_LO 0X00 |
jah128 | 0:d6269d17c8cf | 44 | |
jah128 | 0:d6269d17c8cf | 45 | #define DEFAULT_IR_PULSE_DELAY 400 |
jah128 | 0:d6269d17c8cf | 46 | #define DEFAULT_BASE_IR_PULSE_DELAY 50 |
jah128 | 0:d6269d17c8cf | 47 | |
jah128 | 0:d6269d17c8cf | 48 | #include <stdio.h> |
jah128 | 0:d6269d17c8cf | 49 | #include <stdarg.h> |
jah128 | 0:d6269d17c8cf | 50 | #include <string> |
jah128 | 0:d6269d17c8cf | 51 | #include <vector> |
jah128 | 0:d6269d17c8cf | 52 | |
jah128 | 0:d6269d17c8cf | 53 | #include "settings.h" |
jah128 | 0:d6269d17c8cf | 54 | #include "serial.h" |
jah128 | 0:d6269d17c8cf | 55 | #include "mbed.h" |
jah128 | 0:d6269d17c8cf | 56 | #include "display.h" |
jah128 | 0:d6269d17c8cf | 57 | #include "led.h" |
jah128 | 0:d6269d17c8cf | 58 | #include "i2c.h" |
jah128 | 0:d6269d17c8cf | 59 | #include "motors.h" |
jah128 | 0:d6269d17c8cf | 60 | #include "sensors.h" |
jah128 | 0:d6269d17c8cf | 61 | #include "eprom.h" |
jah128 | 0:d6269d17c8cf | 62 | #include "colour.h" |
jah128 | 0:d6269d17c8cf | 63 | #include "pic.h" |
jah128 | 0:d6269d17c8cf | 64 | #include "demo.h" |
jah128 | 0:d6269d17c8cf | 65 | #include "dances.h" |
jah128 | 0:d6269d17c8cf | 66 | #include "basic.h" |
jah128 | 0:d6269d17c8cf | 67 | |
jah128 | 0:d6269d17c8cf | 68 | //NB The user needs to have a main.cpp with a main() function and a handle_switch_event(char) function |
jah128 | 0:d6269d17c8cf | 69 | #include "main.h" |
jah128 | 0:d6269d17c8cf | 70 | |
jah128 | 0:d6269d17c8cf | 71 | |
jah128 | 0:d6269d17c8cf | 72 | void init(void); |
jah128 | 0:d6269d17c8cf | 73 | float get_uptime(void); |
jah128 | 0:d6269d17c8cf | 74 | void pause_user_code(float period); |
jah128 | 0:d6269d17c8cf | 75 | void reset_encoders(void); |
jah128 | 0:d6269d17c8cf | 76 | void debug(const char* format, ...) ; |
jah128 | 0:d6269d17c8cf | 77 | |
jah128 | 0:d6269d17c8cf | 78 | void IF_end_pause_user_code(void); |
jah128 | 0:d6269d17c8cf | 79 | void IF_handle_events(void); |
jah128 | 0:d6269d17c8cf | 80 | void IF_update_encoders(void); |
jah128 | 0:d6269d17c8cf | 81 | void IF_update_user_id(void); |
jah128 | 0:d6269d17c8cf | 82 | void IF_update_switch(void); |
jah128 | 0:d6269d17c8cf | 83 | void IF_update_minutes(void); |
jah128 | 1:060690a934a9 | 84 | void IF_get_hardware_description(void); |
jah128 | 0:d6269d17c8cf | 85 | |
jah128 | 0:d6269d17c8cf | 86 | extern char * program_name; |
jah128 | 0:d6269d17c8cf | 87 | extern char * author_name; |
jah128 | 0:d6269d17c8cf | 88 | extern char * version_name; |
jah128 | 0:d6269d17c8cf | 89 | |
jah128 | 0:d6269d17c8cf | 90 | extern Serial pc; |
jah128 | 0:d6269d17c8cf | 91 | extern Serial bt; |
jah128 | 0:d6269d17c8cf | 92 | extern Display display; |
jah128 | 0:d6269d17c8cf | 93 | extern I2C primary_i2c; |
jah128 | 0:d6269d17c8cf | 94 | extern InterruptIn gpio_interrupt; |
jah128 | 0:d6269d17c8cf | 95 | |
jah128 | 0:d6269d17c8cf | 96 | extern AnalogIn vin_current; |
jah128 | 0:d6269d17c8cf | 97 | extern AnalogIn vin_battery; |
jah128 | 0:d6269d17c8cf | 98 | extern AnalogIn vin_dc; |
jah128 | 0:d6269d17c8cf | 99 | |
jah128 | 0:d6269d17c8cf | 100 | extern DigitalOut mbed_led1; |
jah128 | 0:d6269d17c8cf | 101 | extern DigitalOut mbed_led2; |
jah128 | 0:d6269d17c8cf | 102 | extern DigitalOut mbed_led3; |
jah128 | 0:d6269d17c8cf | 103 | extern DigitalOut mbed_led4; |
jah128 | 0:d6269d17c8cf | 104 | extern PwmOut center_led_red; |
jah128 | 0:d6269d17c8cf | 105 | extern PwmOut center_led_green; |
jah128 | 0:d6269d17c8cf | 106 | extern PwmOut motor_left_f; |
jah128 | 0:d6269d17c8cf | 107 | extern PwmOut motor_left_r; |
jah128 | 0:d6269d17c8cf | 108 | extern PwmOut motor_right_f; |
jah128 | 0:d6269d17c8cf | 109 | extern PwmOut motor_right_r; |
jah128 | 0:d6269d17c8cf | 110 | |
jah128 | 0:d6269d17c8cf | 111 | extern char time_based_motor_action; |
jah128 | 0:d6269d17c8cf | 112 | |
jah128 | 0:d6269d17c8cf | 113 | extern int base_colour_sensor_raw_values []; |
jah128 | 0:d6269d17c8cf | 114 | extern int top_colour_sensor_raw_values []; |
jah128 | 0:d6269d17c8cf | 115 | |
jah128 | 0:d6269d17c8cf | 116 | extern char waiting_for_ultrasonic; |
jah128 | 0:d6269d17c8cf | 117 | extern int ultrasonic_distance; |
jah128 | 0:d6269d17c8cf | 118 | extern char ultrasonic_distance_updated; |
jah128 | 0:d6269d17c8cf | 119 | extern Timeout ultrasonic_timeout; |
jah128 | 0:d6269d17c8cf | 120 | extern Ticker ultrasonic_ticker; |
jah128 | 0:d6269d17c8cf | 121 | |
jah128 | 0:d6269d17c8cf | 122 | extern unsigned short background_ir_values []; |
jah128 | 0:d6269d17c8cf | 123 | extern unsigned short illuminated_ir_values []; |
jah128 | 0:d6269d17c8cf | 124 | extern float reflected_ir_distances []; |
jah128 | 0:d6269d17c8cf | 125 | extern char ir_values_stored; |
jah128 | 0:d6269d17c8cf | 126 | |
jah128 | 0:d6269d17c8cf | 127 | extern char firmware_bytes[]; |
jah128 | 0:d6269d17c8cf | 128 | |
jah128 | 0:d6269d17c8cf | 129 | extern char testing_voltage_regulators_flag; |
jah128 | 0:d6269d17c8cf | 130 | extern char power_good_motor_left; |
jah128 | 0:d6269d17c8cf | 131 | extern char power_good_motor_right; |
jah128 | 0:d6269d17c8cf | 132 | extern char power_good_infrared; |
jah128 | 0:d6269d17c8cf | 133 | extern char status_dc_in; |
jah128 | 0:d6269d17c8cf | 134 | extern char status_charging; |
jah128 | 0:d6269d17c8cf | 135 | |
jah128 | 0:d6269d17c8cf | 136 | extern unsigned short background_base_ir_values []; |
jah128 | 0:d6269d17c8cf | 137 | extern unsigned short illuminated_base_ir_values []; |
jah128 | 0:d6269d17c8cf | 138 | extern char base_ir_values_stored; |
jah128 | 0:d6269d17c8cf | 139 | extern float line_position; |
jah128 | 0:d6269d17c8cf | 140 | extern char line_found; |
jah128 | 0:d6269d17c8cf | 141 | |
jah128 | 0:d6269d17c8cf | 142 | extern float motor_left_speed; |
jah128 | 0:d6269d17c8cf | 143 | extern float motor_right_speed; |
jah128 | 0:d6269d17c8cf | 144 | extern char motor_left_brake; |
jah128 | 0:d6269d17c8cf | 145 | extern char motor_right_brake; |
jah128 | 0:d6269d17c8cf | 146 | |
jah128 | 0:d6269d17c8cf | 147 | extern float center_led_brightness; |
jah128 | 0:d6269d17c8cf | 148 | extern float backlight_brightness; |
jah128 | 0:d6269d17c8cf | 149 | |
jah128 | 0:d6269d17c8cf | 150 | extern float firmware_version; |
jah128 | 1:060690a934a9 | 151 | extern float pcb_version; |
jah128 | 1:060690a934a9 | 152 | extern float serial_number; |
jah128 | 1:060690a934a9 | 153 | |
jah128 | 1:060690a934a9 | 154 | extern char has_compass; |
jah128 | 1:060690a934a9 | 155 | extern char has_side_ir; |
jah128 | 1:060690a934a9 | 156 | extern char has_base_ir; |
jah128 | 1:060690a934a9 | 157 | extern char has_base_colour_sensor; |
jah128 | 1:060690a934a9 | 158 | extern char has_top_colour_sensor; |
jah128 | 1:060690a934a9 | 159 | extern char has_wheel_encoders; |
jah128 | 1:060690a934a9 | 160 | extern char has_audio_pic; |
jah128 | 1:060690a934a9 | 161 | extern char has_ultrasonic_sensor; |
jah128 | 1:060690a934a9 | 162 | extern char has_temperature_sensor; |
jah128 | 1:060690a934a9 | 163 | extern char has_recharging_circuit; |
jah128 | 1:060690a934a9 | 164 | extern char has_433_radio; |
jah128 | 0:d6269d17c8cf | 165 | |
jah128 | 0:d6269d17c8cf | 166 | extern int ir_pulse_delay; |
jah128 | 0:d6269d17c8cf | 167 | extern int base_ir_pulse_delay; |
jah128 | 0:d6269d17c8cf | 168 | |
jah128 | 0:d6269d17c8cf | 169 | extern char robot_id; |
jah128 | 0:d6269d17c8cf | 170 | extern char previous_robot_id; |
jah128 | 0:d6269d17c8cf | 171 | |
jah128 | 0:d6269d17c8cf | 172 | extern char wheel_encoder_byte; |
jah128 | 0:d6269d17c8cf | 173 | extern char previous_wheel_encoder_byte; |
jah128 | 0:d6269d17c8cf | 174 | extern signed int left_encoder; |
jah128 | 0:d6269d17c8cf | 175 | extern signed int right_encoder; |
jah128 | 0:d6269d17c8cf | 176 | |
jah128 | 0:d6269d17c8cf | 177 | extern char switch_byte; |
jah128 | 0:d6269d17c8cf | 178 | extern char previous_switch_byte; |
jah128 | 0:d6269d17c8cf | 179 | |
jah128 | 0:d6269d17c8cf | 180 | extern char user_code_running; |
jah128 | 0:d6269d17c8cf | 181 | extern char user_code_restore_mode; |
jah128 | 0:d6269d17c8cf | 182 | extern char demo_on; |
jah128 | 0:d6269d17c8cf | 183 | extern char event; |
jah128 | 0:d6269d17c8cf | 184 | extern char change_id_event; |
jah128 | 0:d6269d17c8cf | 185 | extern char encoder_event; |
jah128 | 0:d6269d17c8cf | 186 | extern char switch_event; |
jah128 | 0:d6269d17c8cf | 187 | extern char system_warnings; |
jah128 | 0:d6269d17c8cf | 188 | |
jah128 | 0:d6269d17c8cf | 189 | extern char debug_mode; |
jah128 | 0:d6269d17c8cf | 190 | extern char debug_output; |
jah128 | 0:d6269d17c8cf | 191 | |
jah128 | 0:d6269d17c8cf | 192 | extern vector<string> basic_filenames; |
jah128 | 0:d6269d17c8cf | 193 | extern char psi_basic_file_count; |
jah128 | 0:d6269d17c8cf | 194 | extern char use_flash_basic; |
jah128 | 0:d6269d17c8cf | 195 | extern char file_transfer_mode; |
jah128 | 0:d6269d17c8cf | 196 | #endif |