Kilolib
Kilobot Library
kilolib.h
Go to the documentation of this file.
1 
2 
3 typedef enum {
4  NORMAL = 0,
5  GPS,
6  BOOT = 0x80,
7  BOOTPGM_PAGE,
8  BOOTPGM_SIZE,
9  RESET,
10  SLEEP,
11  WAKEUP,
12  CHARGE,
13  VOLTAGE,
14  RUN,
15  READUID,
16  CALIB,
17 } message_type_t;
18 
34 typedef struct {
35  uint8_t data[9];
36  uint8_t type;
37  uint16_t crc;
38 } message_t;
39 
40 
85 typedef struct {
86  int16_t low_gain;
87  int16_t high_gain;
89 
90 typedef void (*message_rx_t)(message_t *, distance_measurement_t *d);
91 typedef message_t *(*message_tx_t)(void);
92 typedef void (*message_tx_success_t)(void);
93 
127 extern volatile uint32_t kilo_ticks;
128 extern volatile uint16_t kilo_tx_period;
135 extern uint16_t kilo_uid;
144 extern uint8_t kilo_turn_left;
153 extern uint8_t kilo_turn_right;
163 extern uint8_t kilo_straight_left;
173 extern uint8_t kilo_straight_right;
174 
218 extern message_rx_t kilo_message_rx;
275 extern message_tx_t kilo_message_tx;
276 
291 extern message_tx_success_t kilo_message_tx_success;
292 
293 extern "C" {
294 
312 uint8_t estimate_distance(const distance_measurement_t *d);
313 
330 void delay(uint16_t ms);
331 
346 uint8_t rand_hard();
347 
357 uint8_t rand_soft();
358 
367 void rand_seed(uint8_t seed);
368 
387 int16_t get_ambientlight();
388 
400 int16_t get_voltage();
401 
415 int16_t get_temperature();
416 
464 void set_motors(uint8_t left, uint8_t right);
465 
487 void spinup_motors();
488 
516 void set_color(uint8_t color);
517 
530 void kilo_init();
531 
567 void kilo_start(void (*setup)(void), void (*loop)(void));
568 
569 }
570 
571 
572 
599 uint16_t message_crc(const message_t *msg);
600 
uint8_t kilo_turn_right
Calibrated turn right duty-cycle.
uint8_t type
message type.
Definition: kilolib.h:36
void kilo_start(void(*setup)(void), void(*loop)(void))
Start kilobot event loop.
int16_t get_voltage()
Read the amount of battery voltage.
void set_color(uint8_t color)
Set the output of the RGB led.
int16_t get_ambientlight()
Read the amount of ambient light.
uint8_t estimate_distance(const distance_measurement_t *d)
Estimate distance in mm based on signal strength measurements.
int16_t get_temperature()
Read the temperature of the kilobot.
uint16_t message_crc(const message_t *msg)
Function to compute the CRC of a message struct.
uint8_t kilo_turn_left
Calibrated turn left duty-cycle.
Distance measurement.
Definition: kilolib.h:85
void kilo_init()
Initialize kilobot hardware.
uint16_t kilo_uid
Kilobot unique identifier.
uint8_t kilo_straight_left
Calibrated straight (left motor) duty-cycle.
uint8_t rand_soft()
Software random number generator.
message_rx_t kilo_message_rx
Callback for message receiption.
void set_motors(uint8_t left, uint8_t right)
Set the power of each motor.
void delay(uint16_t ms)
Pauses the program for the specified amount of time.
int16_t high_gain
High gain 10-bit signal-strength measurement.
Definition: kilolib.h:87
void spinup_motors()
Turn motors at full-speed for 15ms.
message_tx_success_t kilo_message_tx_success
Callback for successful message transmission.
void rand_seed(uint8_t seed)
Seed software random number generator.
Message structure.
Definition: kilolib.h:34
volatile uint32_t kilo_ticks
Kilobot clock variable.
message_tx_t kilo_message_tx
Callback for message transmission.
uint8_t kilo_straight_right
Calibrated straight (right motor) duty-cycle.
uint16_t crc
message crc.
Definition: kilolib.h:37
int16_t low_gain
Low gain 10-bit signal-strength measurement.
Definition: kilolib.h:86
uint8_t rand_hard()
Hardware random number generator.