C++ Library for the PsiSwarm Robot - Version 0.8
Dependents: PsiSwarm_V8_Blank_CPP Autonomia_RndmWlk
Fork of PsiSwarmV7_CPP by
psiswarm.h
00001 /* University of York Robotics Laboratory PsiSwarm Library: PsiSwarm C++ Core Header File 00002 * 00003 * Copyright 2016 University of York 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 00007 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS 00008 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00009 * See the License for the specific language governing permissions and limitations under the License. 00010 * 00011 * File: psiswarm.h 00012 * 00013 * (C) Dept. Electronics & Computer Science, University of York 00014 * James Hilder, Alan Millard, Alexander Horsfield, Homero Elizondo, Jon Timmis 00015 * 00016 * PsiSwarm Library Version: 0.8 00017 * 00018 * October 2016 00019 * 00020 * 00021 */ 00022 00023 #ifndef PSISWARM_H 00024 #define PSISWARM_H 00025 00026 #define SOFTWARE_VERSION_CODE 0.80 00027 00028 #define PIC_ADDRESS 0x30 00029 #define LCD_ADDRESS 0x7C 00030 #define LED_IC_ADDRESS 0x42 00031 #define GPIO_IC_ADDRESS 0x40 00032 #define AUX_IC_ADDRESS 0x4E 00033 #define ADC1_ADDRESS 0x46 00034 #define ADC2_ADDRESS 0x48 00035 #define EEPROM_ADDRESS 0XA0 00036 #define TEMPERATURE_ADDRESS 0X30 00037 #define BASE_COLOUR_ADDRESS 0X52 00038 #define TOP_COLOUR_ADDRESS 0X72 00039 #define ULTRASONIC_ADDRESS 0XE0 00040 #define COMMAND_MESSAGE_BYTE 0X1D 00041 #define ACKNOWLEDGE_MESSAGE_BYTE 0X1E 00042 #define RESPONSE_MESSAGE_BYTE 0X1F 00043 #define PSI_BYTE 0X1D 00044 00045 //Set temperature sensor warnings: 60C critical, 50C high, 0C low 00046 #define TEMPERATURE_CRITICAL_HI 0X03 00047 #define TEMPEARTURE_CRITICAL_LO 0XC0 00048 #define TEMPERATURE_HIGH_HI 0X03 00049 #define TEMPEARTURE_HIGH_LO 0X20 00050 #define TEMPERATURE_LOW_HI 0X00 00051 #define TEMPEARTURE_LOW_LO 0X00 00052 00053 #define DEFAULT_IR_PULSE_DELAY 400 00054 #define DEFAULT_BASE_IR_PULSE_DELAY 50 00055 00056 #include <stdio.h> 00057 #include <stdarg.h> 00058 #include <string> 00059 #include <vector> 00060 00061 #include "settings.h" 00062 #include "serial.h" 00063 #include "mbed.h" 00064 #include "display.h" 00065 #include "led.h" 00066 #include "i2c_setup.h" 00067 #include "motors.h" 00068 #include "sensors.h" 00069 #include "eprom.h" 00070 #include "colour.h" 00071 #include "sound.h" 00072 #include "demo.h" 00073 #include "animations.h" 00074 #include "basic.h" 00075 00076 //NB The user needs to have a main.cpp with a main() function and a handle_switch_event(char) function 00077 #include "main.h" 00078 00079 /** Psiswarm Class 00080 * The main class to define a robot 00081 * 00082 * Example code for main.cpp: 00083 * @code 00084 * #include "psiswarm.h" 00085 * Psiswarm psi; 00086 * char * program_name = "Example"; 00087 * char * author_name = "Name"; 00088 * char * version_name = "0.8"; 00089 * void handle_switch_event(char switch_state){} 00090 * void handle_user_serial_message(char * message, char length, char interface) {} 00091 * int main(){ 00092 * psi.init(); 00093 * while(1) { //Do something! 00094 * } 00095 * } 00096 * @endcode 00097 */ 00098 class Psiswarm 00099 { 00100 public: 00101 /** 00102 * Main initialisation routine for the PsiSwarm robot 00103 * 00104 * Set up the GPIO expansion ICs, launch demo mode if button is held 00105 */ 00106 void init(void); 00107 00108 /** 00109 * Get the uptime for the robot 00110 * 00111 * @return The amount of time in seconds that the MBED has been active since last reset 00112 */ 00113 float get_uptime(void); 00114 00115 /** 00116 * Pause the user code for a defined amount of time 00117 * 00118 * @param The amount of time in seconds to pause user code 00119 */ 00120 void pause_user_code(float period); 00121 00122 /** 00123 * Reset the wheel encoder counters 00124 */ 00125 void reset_encoders(void); 00126 00127 /** 00128 * Send a string (in printf format) to the preferred debug stream, specified in settings.h [of overridden programmatically] 00129 * 00130 * @param The string to send to output stream 00131 */ 00132 void debug(const char* format, ...) ; 00133 private: 00134 void IF_end_pause_user_code(void); 00135 void IF_handle_events(void); 00136 void IF_update_encoders(void); 00137 void IF_update_user_id(void); 00138 void IF_update_switch(void); 00139 void IF_update_minutes(void); 00140 void IF_get_hardware_description(void); 00141 }; 00142 00143 extern Psiswarm psi; 00144 extern Serial pc; 00145 extern Serial bt; 00146 extern Display display; 00147 extern Motors motors; 00148 extern Eprom eprom; 00149 extern Led led; 00150 extern Sensors sensors; 00151 extern SerialControl serial; 00152 extern Sound sound; 00153 extern Setup i2c_setup; 00154 extern Demo demo; 00155 extern Animations animations; 00156 extern Basic basic; 00157 extern char * program_name; 00158 extern char * author_name; 00159 extern char * version_name; 00160 00161 extern I2C primary_i2c; 00162 extern InterruptIn gpio_interrupt; 00163 00164 extern AnalogIn vin_current; 00165 extern AnalogIn vin_battery; 00166 extern AnalogIn vin_dc; 00167 00168 extern DigitalOut mbed_led1; 00169 extern DigitalOut mbed_led2; 00170 extern DigitalOut mbed_led3; 00171 extern DigitalOut mbed_led4; 00172 extern PwmOut center_led_red; 00173 extern PwmOut center_led_green; 00174 extern PwmOut motor_left_f; 00175 extern PwmOut motor_left_r; 00176 extern PwmOut motor_right_f; 00177 extern PwmOut motor_right_r; 00178 00179 extern char time_based_motor_action; 00180 00181 extern int base_colour_sensor_raw_values []; 00182 extern int top_colour_sensor_raw_values []; 00183 00184 extern char waiting_for_ultrasonic; 00185 extern int ultrasonic_distance; 00186 extern char ultrasonic_distance_updated; 00187 extern Timeout ultrasonic_timeout; 00188 extern Ticker ultrasonic_ticker; 00189 00190 extern char background_ir_values []; 00191 extern unsigned short illuminated_ir_values []; 00192 extern float reflected_ir_distances []; 00193 extern char ir_values_stored; 00194 00195 extern char firmware_bytes[]; 00196 00197 extern char testing_voltage_regulators_flag; 00198 extern char power_good_motor_left; 00199 extern char power_good_motor_right; 00200 extern char power_good_infrared; 00201 extern char status_dc_in; 00202 extern char status_charging; 00203 00204 extern unsigned short background_base_ir_values []; 00205 extern unsigned short illuminated_base_ir_values []; 00206 extern char base_ir_values_stored; 00207 extern float line_position; 00208 extern char line_found; 00209 00210 extern float motor_left_speed; 00211 extern float motor_right_speed; 00212 extern char motor_left_brake; 00213 extern char motor_right_brake; 00214 00215 extern float center_led_brightness; 00216 extern float backlight_brightness; 00217 00218 extern char use_motor_calibration; 00219 extern char motor_calibration_set; 00220 extern float left_motor_calibration_value; 00221 extern float right_motor_calibration_value; 00222 00223 extern float firmware_version; 00224 extern float pcb_version; 00225 extern float serial_number; 00226 00227 extern char has_compass; 00228 extern char has_side_ir; 00229 extern char has_base_ir; 00230 extern char has_base_colour_sensor; 00231 extern char has_top_colour_sensor; 00232 extern char has_wheel_encoders; 00233 extern char has_audio_pic; 00234 extern char has_ultrasonic_sensor; 00235 extern char has_temperature_sensor; 00236 extern char has_recharging_circuit; 00237 extern char has_433_radio; 00238 00239 extern int ir_pulse_delay; 00240 extern int base_ir_pulse_delay; 00241 00242 extern char robot_id; 00243 extern char previous_robot_id; 00244 00245 extern char wheel_encoder_byte; 00246 extern char previous_wheel_encoder_byte; 00247 extern signed int left_encoder; 00248 extern signed int right_encoder; 00249 00250 extern char switch_byte; 00251 extern char previous_switch_byte; 00252 00253 extern char user_code_running; 00254 extern char user_code_restore_mode; 00255 extern char demo_on; 00256 extern char event; 00257 extern char change_id_event; 00258 extern char encoder_event; 00259 extern char switch_event; 00260 extern char system_warnings; 00261 00262 extern char debug_mode; 00263 extern char debug_output; 00264 00265 extern vector<string> basic_filenames; 00266 extern char psi_basic_file_count; 00267 extern char use_flash_basic; 00268 extern char file_transfer_mode; 00269 00270 extern char beacon_data_needing; 00271 #endif
Generated on Tue Jul 12 2022 21:11:24 by
![doxygen](doxygen.png)