summaryrefslogtreecommitdiff
path: root/robot
diff options
context:
space:
mode:
Diffstat (limited to 'robot')
-rw-r--r--robot/makefile4
-rw-r--r--robot/sim.c48
-rw-r--r--robot/sim.h11
3 files changed, 61 insertions, 2 deletions
diff --git a/robot/makefile b/robot/makefile
index 5f05872..a35162a 100644
--- a/robot/makefile
+++ b/robot/makefile
@@ -9,7 +9,7 @@ PORT ?= /dev/ttyACM0
# SIM = true
CFLAGS=-g -Wall $(DEVICE_SPECIFIC_CFLAGS) -Os
-LDFLAGS=-Wl,-u,vfprintf -lprintf_flt -lm -Wl,-relax -Wl,-gc-sections
+LDFLAGS=-Wl,-u,vfprintf -lm -Wl,-relax -Wl,-gc-sections
include ../shared/os.mk
all: $(if $(SIM), $(TARGET), out.hex)
@@ -20,7 +20,7 @@ include ../shared/makefile
# simulation
CFLAGS += $(if $(SIM), -DW2_SIM -DDBG_ENABLE_COLOR, -mcall-prologues -mmcu=$(MCU))
-LDFLAGS += $(if $(SIM), , -lpololu_$(DEVICE))
+LDFLAGS += $(if $(SIM), , -lpololu_$(DEVICE) -lprintf_flt)
PREFIX := $(if $(SIM), , avr-)
SOURCES += $(if $(SIM), sim.c, )
HEADERS += $(if $(SIM), sim.h, )
diff --git a/robot/sim.c b/robot/sim.c
index 9cce12f..d68e6ff 100644
--- a/robot/sim.c
+++ b/robot/sim.c
@@ -156,3 +156,51 @@ void print(const char* str) {
simprintfunc("print", "\"%s\"", str);
}
+void lcd_goto_xy(unsigned int x, unsigned int y) {
+ simprintfunc("lcd_goto_xy", "%u, %u", x, y);
+}
+
+void delay(unsigned long duration) {
+ return delay_ms(duration);
+}
+
+void delay_ms(unsigned long duration) {
+ simprintfunc("delay_ms", "%lu", duration);
+}
+
+int read_battery_millivolts() {
+ simprintfunc("read_battery_millivolts", "");
+ return W2_BATTERY_FULL;
+}
+
+unsigned long get_ticks() {
+ simprintfunc("get_ticks", "");
+#ifdef W2_HOST_LINUX
+ struct timespec now;
+ clock_gettime(CLOCK_MONOTONIC, &now);
+ return (now.tv_sec * 1e6) + (now.tv_nsec / 1e3);
+#endif
+}
+
+unsigned long ticks_to_microseconds(unsigned long num_ticks) {
+ simprintfunc("ticks_to_microseconds", "%lu", num_ticks);
+ return num_ticks;
+}
+
+int read_line() {
+ return 0;
+}
+
+void play_frequency(unsigned int freq, unsigned int duration, unsigned char volume) {
+ simprintfunc("play_frequency", "%u, %u, %u", freq, duration, volume);
+}
+
+void calibrate_line_sensors(unsigned char read_mode) {
+ simprintfunc("calibrate_line_sensors", "%u", read_mode);
+}
+
+unsigned char pololu_3pi_init(unsigned int line_sensor_timeout) {
+ simprintfunc("pololu_3pi_init", "%u", line_sensor_timeout);
+ return 0;
+}
+
diff --git a/robot/sim.h b/robot/sim.h
index 7d7c091..874a4ad 100644
--- a/robot/sim.h
+++ b/robot/sim.h
@@ -59,6 +59,7 @@
#define TOP_BUTTON 3
#define BOTTOM_BUTTON 4
#define QTR_EMITTERS_ON 0
+#define IR_EMITTERS_ON 0
/**
* simulates pololu library functions for local testing
@@ -79,6 +80,16 @@ unsigned char get_single_debounced_button_press(unsigned char buttons); // NOLIN
void qtr_read(unsigned int* sensor_values, unsigned char read_mode); // NOLINT
unsigned int analog_read(unsigned char channel); // NOLINT
void print(const char* str); // NOLINT
+void lcd_goto_xy(unsigned int x, unsigned int y); // NOLINT
+void delay(unsigned long duration); // NOLINT
+void delay_ms(unsigned long duration); // NOLINT
+int read_battery_millivolts(); // NOLINT
+unsigned long get_ticks(); // NOLINT
+unsigned long ticks_to_microseconds(unsigned long num_ticks); // NOLINT
+int read_line(); // NOLINT
+void play_frequency(unsigned int freq, unsigned int duration, unsigned char volume); // NOLINT
+void calibrate_line_sensors(unsigned char read_mode); // NOLINT
+unsigned char pololu_3pi_init(unsigned int line_sensor_timeout); // NOLINT
void w2_sim_setup();
void w2_sim_cycle_begin();