aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/avr/serial.c3
-rw-r--r--src/avr/timer.c3
-rw-r--r--src/command.h9
-rw-r--r--src/sam3x8e/Kconfig4
-rw-r--r--src/sam3x8e/serial.c3
-rw-r--r--src/sam3x8e/timer.c3
6 files changed, 21 insertions, 4 deletions
diff --git a/src/avr/serial.c b/src/avr/serial.c
index bd92f048..6bd88598 100644
--- a/src/avr/serial.c
+++ b/src/avr/serial.c
@@ -9,6 +9,7 @@
#include "autoconf.h" // CONFIG_SERIAL_BAUD
#include "board/io.h" // readb
#include "board/misc.h" // console_get_input
+#include "command.h" // DECL_CONSTANT
#include "sched.h" // DECL_INIT
#include "irq.h" // irq_save
@@ -22,6 +23,8 @@ static uint8_t transmit_pos, transmit_max;
* Serial hardware
****************************************************************/
+DECL_CONSTANT(SERIAL_BAUD, CONFIG_SERIAL_BAUD);
+
static void
serial_init(void)
{
diff --git a/src/avr/timer.c b/src/avr/timer.c
index a7e832bc..3744351d 100644
--- a/src/avr/timer.c
+++ b/src/avr/timer.c
@@ -16,6 +16,9 @@
* Low level timer code
****************************************************************/
+DECL_CONSTANT(CLOCK_FREQ, F_CPU);
+DECL_CONSTANT(MCU, CONFIG_MCU);
+
// Return the number of clock ticks for a given number of microseconds
uint32_t
timer_from_us(uint32_t us)
diff --git a/src/command.h b/src/command.h
index 2bbe37f8..c6d8a69c 100644
--- a/src/command.h
+++ b/src/command.h
@@ -15,6 +15,10 @@
// Flags for command handler declarations.
#define HF_IN_SHUTDOWN 0x01 // Handler can run even when in emergency stop
+// Declare a constant exported to the host
+#define DECL_CONSTANT(NAME, VALUE) \
+ _DECL_CONSTANT(NAME, VALUE)
+
// Send an output message (and declare a static message type for it)
#define output(FMT, args...) \
_sendf(_DECL_OUTPUT(FMT) , ##args )
@@ -59,6 +63,11 @@ extern const uint32_t command_identify_size;
= "_DECL_COMMAND " __stringify(FUNC) " " __stringify(FLAGS) " " MSG; \
void __visible FUNC(uint32_t*)
+#define _DECL_CONSTANT(NAME, VALUE) \
+ char __PASTE(_DECLC_ ## NAME ## _, __LINE__) [] \
+ __visible __section(".compile_time_request") \
+ = "_DECL_CONSTANT " __stringify(NAME) " " __stringify(VALUE)
+
// Create a compile time request and return a unique (incrementing id)
// for that request.
#define _DECL_REQUEST_ID(REQUEST, ID_SECTION) ({ \
diff --git a/src/sam3x8e/Kconfig b/src/sam3x8e/Kconfig
index 2edc8f7c..00e1f06e 100644
--- a/src/sam3x8e/Kconfig
+++ b/src/sam3x8e/Kconfig
@@ -6,10 +6,6 @@ config BOARD_DIRECTORY
string
default "sam3x8e"
-config MCU
- string
- default "sam3x8e"
-
config CLOCK_FREQ
int
default 42000000 # 84000000/2
diff --git a/src/sam3x8e/serial.c b/src/sam3x8e/serial.c
index 42b92efe..d07fc734 100644
--- a/src/sam3x8e/serial.c
+++ b/src/sam3x8e/serial.c
@@ -9,6 +9,7 @@
#include "board/gpio.h" // gpio_peripheral
#include "board/io.h" // readb
#include "board/misc.h" // console_get_input
+#include "command.h" // DECL_CONSTANT
#include "sam3x8e.h" // UART
#include "sched.h" // DECL_INIT
#include "irq.h" // irq_save
@@ -24,6 +25,8 @@ static uint32_t transmit_pos, transmit_max;
* Serial hardware
****************************************************************/
+DECL_CONSTANT(SERIAL_BAUD, CONFIG_SERIAL_BAUD);
+
static void
serial_init(void)
{
diff --git a/src/sam3x8e/timer.c b/src/sam3x8e/timer.c
index ead9c90f..0d3728ed 100644
--- a/src/sam3x8e/timer.c
+++ b/src/sam3x8e/timer.c
@@ -16,6 +16,9 @@
* Low level timer code
****************************************************************/
+DECL_CONSTANT(CLOCK_FREQ, CONFIG_CLOCK_FREQ);
+DECL_CONSTANT(MCU, "sam3x8e");
+
// Return the number of clock ticks for a given number of microseconds
uint32_t
timer_from_us(uint32_t us)