summaryrefslogtreecommitdiff
path: root/digital
diff options
context:
space:
mode:
authorFlorent Duchon2013-04-23 17:07:20 +0200
committerFlorent Duchon2013-04-23 17:16:20 +0200
commitb460c9b32ab71634f73caacaf9ee633934009b90 (patch)
tree2608e613bc3a1a66bd9200847ca2f96f615b8e94 /digital
parent6a2f7833c18dab2dea4892de15f10d5e5247ec0c (diff)
digital/beacon: add serial over zigbit feature
Diffstat (limited to 'digital')
-rw-r--r--digital/beacon/src/debug_avr.c17
-rw-r--r--digital/beacon/src/debug_avr.h6
-rw-r--r--digital/zigbit/bitcloud/makefiles/Makefile_All_ZigBit_Atmega1281_Rf230_8Mhz_Gcc2
-rw-r--r--digital/zigbit/common/print.c6
-rw-r--r--digital/zigbit/common/print.h3
-rw-r--r--digital/zigbit/common/serial_ota.c52
-rw-r--r--digital/zigbit/common/serial_ota.h41
7 files changed, 126 insertions, 1 deletions
diff --git a/digital/beacon/src/debug_avr.c b/digital/beacon/src/debug_avr.c
index 022af2d9..a4805157 100644
--- a/digital/beacon/src/debug_avr.c
+++ b/digital/beacon/src/debug_avr.c
@@ -33,9 +33,13 @@
#include "codewheel.h"
#include "laser.h"
#include "network_specific.h"
+#include "network_send_commands.h"
+#include "serial_ota.h"
#include "motor.h"
#include "position.h"
#include "reset.h"
+#include "uid.h"
+#include "misc.h"
HAL_UsartDescriptor_t appUsartDescriptor; // USART descriptor (required by stack)
static HAL_AppTimer_t debugTimer; // TIMER descripor used by the DEBUG task
@@ -68,13 +72,24 @@ uint8_t rxBuffer[40];
OPEN_USART(&appUsartDescriptor);
}
+
/* RX USART Callback */
void usartRXCallback(uint16_t bytesToRead)
{
+ uint16_t dest = 0;
/* Read RX buffer from HAL */
READ_USART(&appUsartDescriptor,rxBuffer,bytesToRead);
+ if(get_serial_ota_mode() == 1)
+ {
+ if(get_uid() == 0)
+ dest = get_serial_ota_EDaddr();
+ else
+ dest = 0;
+ network_send_buffer_over_zb(dest,rxBuffer,bytesToRead);
+ }
+ else
{
switch(rxBuffer[0])
{
@@ -193,4 +208,4 @@ void debug_task(void)
uprintf("## Motor\r\n");
uprintf("State : %d ---- speed = %d\r\n",motor_get_state(),OCR0A);
#endif
-}
+} \ No newline at end of file
diff --git a/digital/beacon/src/debug_avr.h b/digital/beacon/src/debug_avr.h
index 488d8b16..cdba61c5 100644
--- a/digital/beacon/src/debug_avr.h
+++ b/digital/beacon/src/debug_avr.h
@@ -43,4 +43,10 @@ void debug_start_stop_task(void);
/* Debug task callback */
void debug_task(void);
+/* This function stops the uart over zb mode */
+void serial_over_zigbit_stop(void);
+
+/* This function starts the uart over zb mode */
+void serial_over_zigbit_start(uint16_t addr);
+
#endif
diff --git a/digital/zigbit/bitcloud/makefiles/Makefile_All_ZigBit_Atmega1281_Rf230_8Mhz_Gcc b/digital/zigbit/bitcloud/makefiles/Makefile_All_ZigBit_Atmega1281_Rf230_8Mhz_Gcc
index d4df278b..e47b4e6f 100644
--- a/digital/zigbit/bitcloud/makefiles/Makefile_All_ZigBit_Atmega1281_Rf230_8Mhz_Gcc
+++ b/digital/zigbit/bitcloud/makefiles/Makefile_All_ZigBit_Atmega1281_Rf230_8Mhz_Gcc
@@ -64,6 +64,8 @@ SRCS = \
$(BITCLOUD_PATH)/Components/ConfigServer/src/configServer.c \
$(BITCLOUD_COMMON_SOURCES)/print.c \
$(BITCLOUD_COMMON_SOURCES)/network.c \
+ $(BITCLOUD_COMMON_SOURCES)/network_send_commands.c \
+ $(BITCLOUD_COMMON_SOURCES)/serial_ota.c \
$(BITCLOUD_COMMON_SOURCES)/uid.c \
$(BITCLOUD_COMMON_SOURCES)/reset.c \
$(APB_AVR_PATH)/modules/twi/twi_hard.avr.c \
diff --git a/digital/zigbit/common/print.c b/digital/zigbit/common/print.c
index 8d3af72a..bad428c7 100644
--- a/digital/zigbit/common/print.c
+++ b/digital/zigbit/common/print.c
@@ -90,3 +90,9 @@ void uprintf(char *format, ...)
}
va_end(args);
}
+
+/* This function send raw data over uart */
+void print_raw_data(uint8_t * buffer,uint8_t len)
+{
+ WRITE_USART(&appUsartDescriptor,buffer,len);
+}
diff --git a/digital/zigbit/common/print.h b/digital/zigbit/common/print.h
index 57106ad7..515e1065 100644
--- a/digital/zigbit/common/print.h
+++ b/digital/zigbit/common/print.h
@@ -54,4 +54,7 @@ void usartTXCallback(void);
/* This function sends data string via the USART interface */
void uprintf(char *format, ...);
+/* This function send raw data over uart */
+void print_raw_data(uint8_t * buffer,uint8_t len);
+
#endif \ No newline at end of file
diff --git a/digital/zigbit/common/serial_ota.c b/digital/zigbit/common/serial_ota.c
new file mode 100644
index 00000000..c37cb5c7
--- /dev/null
+++ b/digital/zigbit/common/serial_ota.c
@@ -0,0 +1,52 @@
+/* serial_ota.c */
+/* Serial over ZB interface. {{{
+ *
+ * Copyright (C) 2012 Florent Duchon
+ *
+ * APBTeam:
+ * Web: http://apbteam.org/
+ * Email: team AT apbteam DOT org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * }}} */
+
+static uint8_t serial_over_zigbit_flag = 0;
+static uint16_t serial_over_zibgit_addr = 0;
+
+/* This function stops the uart over zb mode */
+void serial_over_zigbit_stop(void)
+{
+ serial_over_zigbit_flag = 0;
+}
+
+/* This function starts the uart over zb mode */
+void serial_over_zigbit_start(uint16_t addr)
+{
+ serial_over_zibgit_addr = addr;
+ serial_over_zigbit_flag = 1;
+}
+
+/* This function returns the serial ota mode */
+uint8_t get_serial_ota_mode(void)
+{
+ return serial_over_zigbit_flag;
+}
+
+/* This function returns the serial ota ED address */
+uint16_t get_serial_ota_EDaddr(void)
+{
+ return serial_over_zibgit_addr;
+} \ No newline at end of file
diff --git a/digital/zigbit/common/serial_ota.h b/digital/zigbit/common/serial_ota.h
new file mode 100644
index 00000000..1b08322e
--- /dev/null
+++ b/digital/zigbit/common/serial_ota.h
@@ -0,0 +1,41 @@
+/* serial_ota.c */
+/* Serial over ZB interface. {{{
+ *
+ * Copyright (C) 2012 Florent Duchon
+ *
+ * APBTeam:
+ * Web: http://apbteam.org/
+ * Email: team AT apbteam DOT org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * }}} */
+
+#ifndef _SERIAL_OTA_H
+#define _SERIAL_OTA_H
+
+/* This function stops the uart over zb mode */
+void serial_over_zigbit_stop(void);
+
+/* This function starts the uart over zb mode */
+void serial_over_zigbit_start(uint16_t addr);
+
+/* This function returns the serial ota mode */
+uint8_t get_serial_ota_mode(void);
+
+/* This function returns the serial ota ED address */
+uint16_t get_serial_ota_EDaddr(void);
+
+#endif