UKESF Headstart Summer School / PsiSwarm-Headstart

Dependents:   UKESF_Lab

Fork of PsiSwarmLibrary by James Hilder

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers psiswarm.h Source File

psiswarm.h

00001 /* University of York Robotics Laboratory PsiSwarm Library: PsiSwarm Core Header File
00002  * 
00003  * File: psiswarm.h
00004  *
00005  * (C) Dept. Electronics & Computer Science, University of York
00006  * James Hilder, Alan Millard, Alexander Horsfield, Homero Elizondo, Jon Timmis
00007  *
00008  * PsiSwarm Library Version: 0.5
00009  *
00010  * April 2016
00011  *
00012  *
00013  */ 
00014 
00015 #ifndef PSISWARM_H
00016 #define PSISWARM_H
00017   
00018 #define SOFTWARE_VERSION_CODE 0.50
00019 
00020 #define PIC_ADDRESS 0x30
00021 #define LCD_ADDRESS 0x7C 
00022 #define LED_IC_ADDRESS 0x42
00023 #define GPIO_IC_ADDRESS 0x40
00024 #define AUX_IC_ADDRESS 0x4E
00025 #define ADC1_ADDRESS 0x46
00026 #define ADC2_ADDRESS 0x48
00027 #define EEPROM_ADDRESS 0XA0
00028 #define TEMPERATURE_ADDRESS 0X30
00029 #define BASE_COLOUR_ADDRESS 0X52
00030 #define TOP_COLOUR_ADDRESS 0X72
00031 #define ULTRASONIC_ADDRESS 0XE0
00032 #define COMMAND_MESSAGE_BYTE 0X1D
00033 #define ACKNOWLEDGE_MESSAGE_BYTE 0X1E
00034 #define RESPONSE_MESSAGE_BYTE 0X1F
00035 #define PSI_BYTE 0X1D
00036 
00037 //Set temperature sensor warnings: 60C critical, 50C high, 0C low
00038 #define TEMPERATURE_CRITICAL_HI 0X03
00039 #define TEMPEARTURE_CRITICAL_LO 0XC0
00040 #define TEMPERATURE_HIGH_HI 0X03
00041 #define TEMPEARTURE_HIGH_LO 0X20
00042 #define TEMPERATURE_LOW_HI 0X00
00043 #define TEMPEARTURE_LOW_LO 0X00
00044 
00045 #define DEFAULT_IR_PULSE_DELAY 400
00046 #define DEFAULT_BASE_IR_PULSE_DELAY 50
00047 
00048 #include <stdio.h>
00049 #include <stdarg.h>
00050 #include <string>
00051 #include <vector>
00052 
00053 #include "settings.h"
00054 #include "serial.h"
00055 #include "mbed.h"
00056 #include "display.h"
00057 #include "led.h"
00058 #include "i2c.h"
00059 #include "motors.h"
00060 #include "sensors.h"
00061 #include "eprom.h"
00062 #include "colour.h"
00063 #include "pic.h"
00064 #include "demo.h"
00065 #include "dances.h"
00066 #include "basic.h"
00067 
00068 //NB The user needs to have a main.cpp with a main() function and a handle_switch_event(char) function
00069 #include "main.h"
00070 
00071 
00072 void init(void);
00073 float get_uptime(void);
00074 void pause_user_code(float period);
00075 void reset_encoders(void);
00076 void debug(const char* format, ...) ;
00077 
00078 void IF_end_pause_user_code(void);
00079 void IF_handle_events(void);
00080 void IF_update_encoders(void);
00081 void IF_update_user_id(void);
00082 void IF_update_switch(void);
00083 void IF_update_minutes(void);
00084 void IF_get_hardware_description(void);
00085 
00086 extern char * program_name;
00087 extern char * author_name;
00088 extern char * version_name;
00089 
00090 extern Serial pc;
00091 extern Serial bt;
00092 extern Display display;
00093 extern I2C primary_i2c;
00094 extern InterruptIn gpio_interrupt;
00095 
00096 extern AnalogIn vin_current;
00097 extern AnalogIn vin_battery;
00098 extern AnalogIn vin_dc;
00099 
00100 extern DigitalOut mbed_led1;
00101 extern DigitalOut mbed_led2;
00102 extern DigitalOut mbed_led3;
00103 extern DigitalOut mbed_led4;
00104 extern PwmOut center_led_red;
00105 extern PwmOut center_led_green;
00106 extern PwmOut motor_left_f;
00107 extern PwmOut motor_left_r;
00108 extern PwmOut motor_right_f;
00109 extern PwmOut motor_right_r;
00110 
00111 extern char time_based_motor_action;
00112 
00113 extern int base_colour_sensor_raw_values [];
00114 extern int top_colour_sensor_raw_values [];
00115 
00116 extern char waiting_for_ultrasonic;
00117 extern int ultrasonic_distance;
00118 extern char ultrasonic_distance_updated;
00119 extern Timeout ultrasonic_timeout;
00120 extern Ticker ultrasonic_ticker;
00121 
00122 extern unsigned short background_ir_values [];
00123 extern unsigned short illuminated_ir_values [];
00124 extern float reflected_ir_distances [];
00125 extern char ir_values_stored;
00126 
00127 extern char firmware_bytes[];
00128 
00129 extern char testing_voltage_regulators_flag;
00130 extern char power_good_motor_left;
00131 extern char power_good_motor_right;
00132 extern char power_good_infrared;
00133 extern char status_dc_in;
00134 extern char status_charging;
00135 
00136 extern unsigned short background_base_ir_values [];
00137 extern unsigned short illuminated_base_ir_values [];
00138 extern char base_ir_values_stored;
00139 extern float line_position;
00140 extern char line_found;
00141 
00142 extern float motor_left_speed;
00143 extern float motor_right_speed;
00144 extern char motor_left_brake;
00145 extern char motor_right_brake;
00146 
00147 extern float center_led_brightness;
00148 extern float backlight_brightness;
00149 
00150 extern char use_motor_calibration;
00151 extern char motor_calibration_set;
00152 extern float left_motor_calibration_value;
00153 extern float right_motor_calibration_value;
00154 
00155 extern float firmware_version;
00156 extern float pcb_version;
00157 extern float serial_number;
00158 
00159 extern char has_compass;
00160 extern char has_side_ir;
00161 extern char has_base_ir;
00162 extern char has_base_colour_sensor;
00163 extern char has_top_colour_sensor;
00164 extern char has_wheel_encoders;
00165 extern char has_audio_pic;
00166 extern char has_ultrasonic_sensor;
00167 extern char has_temperature_sensor;
00168 extern char has_recharging_circuit;
00169 extern char has_433_radio;
00170 
00171 extern int ir_pulse_delay;
00172 extern int base_ir_pulse_delay;
00173 
00174 extern char robot_id;
00175 extern char previous_robot_id;
00176 
00177 extern char wheel_encoder_byte;
00178 extern char previous_wheel_encoder_byte;
00179 extern signed int left_encoder;
00180 extern signed int right_encoder;
00181 
00182 extern char switch_byte;
00183 extern char previous_switch_byte;
00184 
00185 extern char user_code_running;
00186 extern char user_code_restore_mode;
00187 extern char demo_on;
00188 extern char event;
00189 extern char change_id_event;
00190 extern char encoder_event;
00191 extern char switch_event;
00192 extern char system_warnings;
00193 
00194 extern char debug_mode;
00195 extern char debug_output;
00196 
00197 extern vector<string> basic_filenames; 
00198 extern char psi_basic_file_count;
00199 extern char use_flash_basic;
00200 extern char file_transfer_mode;
00201 #endif