Bluetooth communication for flocking.

Dependencies:   mbed

Fork of BeautifulMemeProject by James Hilder

Committer:
jah128
Date:
Sat Oct 03 23:09:10 2015 +0000
Revision:
1:f6356cf1cefc
Parent:
0:8a5497a2e366
Child:
3:cd048f6e544e
Added software version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jah128 0:8a5497a2e366 1 /* University of York Robotics Laboratory PsiSwarm Library: PsiSwarm Core Header File
jah128 0:8a5497a2e366 2 *
jah128 0:8a5497a2e366 3 * File: psiswarm.h
jah128 0:8a5497a2e366 4 *
jah128 0:8a5497a2e366 5 * (C) Dr James Hilder, Dept. Electronics & Computer Science, University of York
jah128 0:8a5497a2e366 6 *
jah128 0:8a5497a2e366 7 * PsiSwarm Library Version: 0.2
jah128 0:8a5497a2e366 8 *
jah128 0:8a5497a2e366 9 * September 2015
jah128 0:8a5497a2e366 10 *
jah128 0:8a5497a2e366 11 */
jah128 0:8a5497a2e366 12
jah128 0:8a5497a2e366 13 #ifndef PSISWARM_H
jah128 0:8a5497a2e366 14 #define PSISWARM_H
jah128 0:8a5497a2e366 15
jah128 0:8a5497a2e366 16 #define SOFTWARE_VERSION_CODE 0.20
jah128 0:8a5497a2e366 17
jah128 0:8a5497a2e366 18 #define LCD_ADDRESS 0x7C
jah128 0:8a5497a2e366 19 #define LED_IC_ADDRESS 0x42
jah128 0:8a5497a2e366 20 #define GPIO_IC_ADDRESS 0x40
jah128 0:8a5497a2e366 21 #define AUX_IC_ADDRESS 0x4E
jah128 0:8a5497a2e366 22 #define ADC1_ADDRESS 0x46
jah128 0:8a5497a2e366 23 #define ADC2_ADDRESS 0x48
jah128 0:8a5497a2e366 24 #define EEPROM_ADDRESS 0XA0
jah128 0:8a5497a2e366 25 #define TEMPERATURE_ADDRESS 0X30
jah128 0:8a5497a2e366 26 #define BASE_COLOUR_ADDRESS 0X52
jah128 0:8a5497a2e366 27 #define TOP_COLOUR_ADDRESS 0X72
jah128 0:8a5497a2e366 28 #define ULTRASONIC_ADDRESS 0XE0
jah128 0:8a5497a2e366 29 #define COMMAND_MESSAGE_BYTE 0X1D
jah128 0:8a5497a2e366 30 #define ACKNOWLEDGE_MESSAGE_BYTE 0X1E
jah128 0:8a5497a2e366 31 #define RESPONSE_MESSAGE_BYTE 0X1F
jah128 0:8a5497a2e366 32 #define PSI_BYTE 0X1D
jah128 0:8a5497a2e366 33
jah128 0:8a5497a2e366 34 //Set temperature sensor warnings: 60C critical, 50C high, 0C low
jah128 0:8a5497a2e366 35 #define TEMPERATURE_CRITICAL_HI 0X03
jah128 0:8a5497a2e366 36 #define TEMPEARTURE_CRITICAL_LO 0XC0
jah128 0:8a5497a2e366 37 #define TEMPERATURE_HIGH_HI 0X03
jah128 0:8a5497a2e366 38 #define TEMPEARTURE_HIGH_LO 0X20
jah128 0:8a5497a2e366 39 #define TEMPERATURE_LOW_HI 0X00
jah128 0:8a5497a2e366 40 #define TEMPEARTURE_LOW_LO 0X00
jah128 0:8a5497a2e366 41
jah128 0:8a5497a2e366 42 #define DEFAULT_IR_PULSE_DELAY 400
jah128 0:8a5497a2e366 43 #define DEFAULT_BASE_IR_PULSE_DELAY 50
jah128 0:8a5497a2e366 44
jah128 0:8a5497a2e366 45 #include <stdio.h>
jah128 0:8a5497a2e366 46 #include <stdarg.h>
jah128 0:8a5497a2e366 47
jah128 0:8a5497a2e366 48 #include "settings.h"
jah128 0:8a5497a2e366 49 #include "serial.h"
jah128 0:8a5497a2e366 50 #include "mbed.h"
jah128 0:8a5497a2e366 51 #include "display.h"
jah128 0:8a5497a2e366 52 #include "led.h"
jah128 0:8a5497a2e366 53 #include "i2c.h"
jah128 0:8a5497a2e366 54 #include "motors.h"
jah128 0:8a5497a2e366 55 #include "sensors.h"
jah128 0:8a5497a2e366 56 #include "eprom.h"
jah128 0:8a5497a2e366 57 #include "colour.h"
jah128 0:8a5497a2e366 58 #include "demo.h"
jah128 0:8a5497a2e366 59
jah128 0:8a5497a2e366 60
jah128 0:8a5497a2e366 61 //NB The user needs to have a main.cpp with a main() function and a handle_switch_event(char) function
jah128 0:8a5497a2e366 62 #include "main.h"
jah128 0:8a5497a2e366 63
jah128 0:8a5497a2e366 64
jah128 0:8a5497a2e366 65 void init(void);
jah128 0:8a5497a2e366 66 float get_uptime(void);
jah128 0:8a5497a2e366 67 void pause_user_code(float period);
jah128 0:8a5497a2e366 68 void reset_encoders(void);
jah128 0:8a5497a2e366 69 void debug(const char* format, ...) ;
jah128 0:8a5497a2e366 70
jah128 0:8a5497a2e366 71 void IF_end_pause_user_code(void);
jah128 0:8a5497a2e366 72 void IF_handle_events(void);
jah128 0:8a5497a2e366 73 void IF_update_encoders(void);
jah128 0:8a5497a2e366 74 void IF_update_user_id(void);
jah128 0:8a5497a2e366 75 void IF_update_switch(void);
jah128 0:8a5497a2e366 76 void IF_update_minutes(void);
jah128 0:8a5497a2e366 77
jah128 0:8a5497a2e366 78 extern char * program_name;
jah128 0:8a5497a2e366 79 extern char * author_name;
jah128 1:f6356cf1cefc 80 extern char * version_name;
jah128 0:8a5497a2e366 81
jah128 0:8a5497a2e366 82 extern Serial pc;
jah128 0:8a5497a2e366 83 extern Serial bt;
jah128 0:8a5497a2e366 84 extern Display display;
jah128 0:8a5497a2e366 85 extern I2C primary_i2c;
jah128 0:8a5497a2e366 86 extern InterruptIn gpio_interrupt;
jah128 0:8a5497a2e366 87
jah128 0:8a5497a2e366 88 extern AnalogIn vin_current;
jah128 0:8a5497a2e366 89 extern AnalogIn vin_battery;
jah128 0:8a5497a2e366 90 extern AnalogIn vin_dc;
jah128 0:8a5497a2e366 91
jah128 0:8a5497a2e366 92 extern DigitalOut mbed_led1;
jah128 0:8a5497a2e366 93 extern DigitalOut mbed_led2;
jah128 0:8a5497a2e366 94 extern DigitalOut mbed_led3;
jah128 0:8a5497a2e366 95 extern DigitalOut mbed_led4;
jah128 0:8a5497a2e366 96 extern PwmOut center_led_red;
jah128 0:8a5497a2e366 97 extern PwmOut center_led_green;
jah128 0:8a5497a2e366 98 extern PwmOut motor_left_f;
jah128 0:8a5497a2e366 99 extern PwmOut motor_left_r;
jah128 0:8a5497a2e366 100 extern PwmOut motor_right_f;
jah128 0:8a5497a2e366 101 extern PwmOut motor_right_r;
jah128 0:8a5497a2e366 102
jah128 0:8a5497a2e366 103 extern int base_colour_sensor_raw_values [];
jah128 0:8a5497a2e366 104 extern int top_colour_sensor_raw_values [];
jah128 0:8a5497a2e366 105
jah128 0:8a5497a2e366 106 extern char waiting_for_ultrasonic;
jah128 0:8a5497a2e366 107 extern int ultrasonic_distance;
jah128 0:8a5497a2e366 108 extern char ultrasonic_distance_updated;
jah128 0:8a5497a2e366 109 extern Timeout ultrasonic_timeout;
jah128 0:8a5497a2e366 110 extern Ticker ultrasonic_ticker;
jah128 0:8a5497a2e366 111
jah128 0:8a5497a2e366 112 extern unsigned short background_ir_values [];
jah128 0:8a5497a2e366 113 extern unsigned short illuminated_ir_values [];
jah128 0:8a5497a2e366 114 extern float reflected_ir_distances [];
jah128 0:8a5497a2e366 115 extern char ir_values_stored;
jah128 0:8a5497a2e366 116
jah128 0:8a5497a2e366 117 extern char firmware_bytes[];
jah128 0:8a5497a2e366 118
jah128 0:8a5497a2e366 119 extern unsigned short background_base_ir_values [];
jah128 0:8a5497a2e366 120 extern unsigned short illuminated_base_ir_values [];
jah128 0:8a5497a2e366 121 extern char base_ir_values_stored;
jah128 0:8a5497a2e366 122
jah128 0:8a5497a2e366 123 extern float motor_left_speed;
jah128 0:8a5497a2e366 124 extern float motor_right_speed;
jah128 0:8a5497a2e366 125 extern char motor_left_brake;
jah128 0:8a5497a2e366 126 extern char motor_right_brake;
jah128 0:8a5497a2e366 127
jah128 0:8a5497a2e366 128 extern float center_led_brightness;
jah128 0:8a5497a2e366 129 extern float backlight_brightness;
jah128 0:8a5497a2e366 130
jah128 0:8a5497a2e366 131 extern float firmware_version;
jah128 0:8a5497a2e366 132
jah128 0:8a5497a2e366 133 extern int ir_pulse_delay;
jah128 0:8a5497a2e366 134 extern int base_ir_pulse_delay;
jah128 0:8a5497a2e366 135
jah128 0:8a5497a2e366 136 extern char robot_id;
jah128 0:8a5497a2e366 137 extern char previous_robot_id;
jah128 0:8a5497a2e366 138
jah128 0:8a5497a2e366 139 extern char wheel_encoder_byte;
jah128 0:8a5497a2e366 140 extern char previous_wheel_encoder_byte;
jah128 0:8a5497a2e366 141 extern signed int left_encoder;
jah128 0:8a5497a2e366 142 extern signed int right_encoder;
jah128 0:8a5497a2e366 143
jah128 0:8a5497a2e366 144 extern char switch_byte;
jah128 0:8a5497a2e366 145 extern char previous_switch_byte;
jah128 0:8a5497a2e366 146
jah128 0:8a5497a2e366 147 extern char user_code_running;
jah128 0:8a5497a2e366 148 extern char user_code_restore_mode;
jah128 0:8a5497a2e366 149 extern char demo_on;
jah128 0:8a5497a2e366 150 extern char event;
jah128 0:8a5497a2e366 151 extern char change_id_event;
jah128 0:8a5497a2e366 152 extern char encoder_event;
jah128 0:8a5497a2e366 153 extern char switch_event;
jah128 0:8a5497a2e366 154 extern char system_warnings;
jah128 0:8a5497a2e366 155
jah128 0:8a5497a2e366 156 extern char debug_mode;
jah128 0:8a5497a2e366 157 extern char debug_output;
jah128 0:8a5497a2e366 158 #endif