http://code.google.com/p/ese519-group2/source/detail?r=69
Added:
/trunk/monome/console
/trunk/monome/console/main.c
/trunk/monome/console/main.d
/trunk/monome/console/makefile
/trunk/monome/console/monome-splash.jpg
/trunk/monome/console/nrk_cfg.h
/trunk/monome/console/sketchit_console.py
/trunk/monome/console/sketchit_serial_read.py
Modified:
/trunk/monome/controller_base_comm/base_station/main.c
/trunk/monome/controller_base_comm/base_station/main.elf
/trunk/monome/controller_base_comm/base_station/main.hex
/trunk/monome/controller_base_comm/base_station/main.lss
/trunk/monome/controller_base_comm/base_station/main.lst
/trunk/monome/controller_base_comm/base_station/main.map
/trunk/monome/controller_base_comm/base_station/main.sym
/trunk/monome/controller_base_comm/base_station/makefile
=======================================
--- /dev/null
+++ /trunk/monome/console/main.c Tue Dec 21 13:38:34 2010
@@ -0,0 +1,536 @@
+/*
+ * main.c
+ *
+ *
+ * Created by Philip Asare on 12/6/10.
+ * Copyright 2010. All rights reserved.
+ *
+ *
+ * monome sketch-it base station
+ *
+ * communication
+ * -------------
+ * to controllers --> wireless (RT-Link)
+ * to console display --> UART
+ *
+ */
+
+
+#include <nrk.h>
+#include <include.h>
+#include <ulib.h>
+#include <stdio.h>
+#include <avr/sleep.h>
+#include <hal.h>
+#include <bmac.h>
+#include <nrk_error.h>
+
+/* controller tx slots --> base station rx slots */
+#define C1_ADDR 0x0001
+#define C2_ADDR 0x0002
+#define C3_ADDR 0x0003
+#define C4_ADDR 0x0004
+#define ALL_ADDR 0xffff
+#define MY_ADDR 0x000f
+
+
+/* game states and controller tracking */
+#define MAX_NUM_PLAYERS 4
+
+#define VERY_EASY 90
+#define EASY 60
+#define MEDIUM 45
+#define HARD 30
+
+uint8_t state, num_players;
+uint16_t player_addr[MAX_NUM_PLAYERS];
+
+uint8_t num_plays_current_game = 0;
+
+nrk_time_t game_time, start_time, current_time;
+
+char player_initials[4][3];
+char initials[3];
+uint8_t initials_set[4];
+
+uint8_t player_grids[4][8];
+uint8_t player_grids_turned_in[4];
+uint8_t grid[8] = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+#define SYNC 0
+#define SELECT 1
+#define PREGAME 2
+#define GAMEPLAY 3
+#define PLAYERASSIGN 4
+#define GAMEOVER_CALC 5
+#define GAMEOVER_CHOICE 6
+#define CHANGE_STATE 7
+
+#define COMPETITIVE 0
+#define COOPERATIVE 1
+
+/* monome helper functions */
+
+#define type(x) sizeof(x)
+
+typedef struct{
+ uint8_t src;
+ uint8_t dest;
+ uint8_t player;
+} monome_comm_sync_pkt;
+
+typedef struct{
+ uint8_t src;
+ uint8_t dest;
+ uint8_t state;
+} monome_comm_state_pkt;
+
+typedef struct{
+ uint8_t src;
+ uint8_t dest;
+ uint8_t players;
+ uint8_t game_type;
+} monome_comm_select_pkt;
+
+monome_comm_sync_pkt sync_pkt;
+monome_comm_select_pkt select_pkt;
+monome_comm_state_pkt state_pkt;
+
+uint8_t tx_len;
+
+/* task setup */
+
+NRK_STK Stack1[NRK_APP_STACKSIZE];
+nrk_task_type TaskOne;
+void Task1(void);
+
+NRK_STK TimerStack[NRK_APP_STACKSIZE];
+nrk_task_type TimerTask;
+void timer_task(void);
+
+inline void monome_comm_init();
+inline void monome_setup_system();
+inline void monome_add_controller(uint8_t slot);
+inline void monome_validate_game();
+inline void monome_comm_send_state(uint8_t state);
+void monome_set_player_initials(uint8_t slot);
+void nrk_create_taskset();
+
+uint8_t tx_buf[RF_MAX_PAYLOAD_SIZE];
+uint8_t rx_buf[RF_MAX_PAYLOAD_SIZE];
+
+int
+main ()
+{
+ nrk_setup_ports();
+ nrk_setup_uart(UART_BAUDRATE_115K2);
+
+ printf( "Starting up...\r\n" );
+
+
+ nrk_init();
+
+ nrk_led_clr(0);
+ nrk_led_clr(1);
+ nrk_led_clr(2);
+ nrk_led_clr(3);
+
+ nrk_time_set(0,0);
+
+
+ bmac_task_config();
+
+ nrk_create_taskset ();
+
+ nrk_start();
+
+ return 0;
+}
+
+void timer_task(){
+ uint8_t i;
+ game_time.secs = 0;
+ game_time.nano_secs = 0;
+ while(!bmac_started()) nrk_wait_until_next_period();
+ while(1){
+ printf("state: %d\r\n", state);
+ if(state == GAMEPLAY){
+ if(num_plays_current_game < 2){
+ game_time.secs = VERY_EASY;
+ }
+ if(num_plays_current_game < 4){
+ game_time.secs = EASY;
+ }
+ if(num_plays_current_game < 6){
+ game_time.secs = MEDIUM;
+ }
+ else{
+ game_time.secs = HARD;
+ }
+ nrk_led_clr(RED_LED);
+ nrk_led_set(GREEN_LED);
+ nrk_time_get(¤t_time);
+ while((current_time.secs - start_time.secs) < game_time.secs){
+ nrk_wait_until_next_period();
+ nrk_time_get(¤t_time);
+ }
+ if(state == GAMEPLAY){
+ state = GAMEOVER_CALC;
+ tx_buf[2] = GAMEOVER_CALC;
+ tx_buf[1] = ALL_ADDR%256;
+ for(i = 0; i <select_pkt.players; i++){
+ tx_buf[1] = player_addr[i]%256;
+ bmac_addr_decode_dest_mac(player_addr[i]);
+ while(bmac_tx_pkt( tx_buf, tx_len)!=NRK_OK);
+ }
+ printf( "Gameover\r\n" );
+ }
+ nrk_led_clr(GREEN_LED);
+ nrk_led_set(RED_LED);
+ }
+ nrk_wait_until_next_period();
+ }
+
+
+}
+
+void Task1()
+{
+ //uint8_t j, i;
+ uint8_t *local_rx_buf;
+ uint8_t length, i;
+ int8_t rssi;
+
+ monome_setup_system();
+ monome_comm_init();
+
+ while(!bmac_started()) nrk_wait_until_next_period();
+ /*tx_buf[1] = ALL_ADDR;
+ tx_buf[2] = SYNC;
+ bmac_tx_pkt(tx_buf, 3);*/
+ while(1){
+
+ nrk_led_set(ORANGE_LED);
+ if(bmac_rx_pkt_ready() == 0 )
+ {
+ bmac_wait_until_rx_pkt();
+ nrk_led_set(BLUE_LED);
+ local_rx_buf=bmac_rx_pkt_get(&length, &rssi);
+ printf( "Got Packet from %d length %d\r\n", local_rx_buf[0] ,length );
+ if((state == SYNC) || (state == SELECT)){
+ if(length == type(monome_comm_sync_pkt)){
+ monome_add_controller(local_rx_buf[0]);
+ }
+
+ else if(state == SELECT && (length == type(monome_comm_select_pkt))){
+ select_pkt.players = local_rx_buf[2];
+ select_pkt.game_type = local_rx_buf[3];
+ monome_validate_game();
+ }
+ else ;
+
+ }
+
+ else if(length == 5){
+ initials[0] = local_rx_buf[2];
+ initials[1] = local_rx_buf[3];
+ initials[2] = local_rx_buf[4];
+ monome_set_player_initials(local_rx_buf[0]);
+ printf("player %d initials: %s\r\n", local_rx_buf[0], initials);
+ }
+
+ else if(state == GAMEPLAY && length == 10){
+ memcpy(&grid, &local_rx_buf[3], 8);
+ if(local_rx_buf[0] == player_addr[0]){
+ memcpy(&player_grids[0], &grid, 8);
+ }
+ else if(local_rx_buf[0] == player_addr[1]){
+ memcpy(&player_grids[1], &grid, 8);
+ }
+ else if(local_rx_buf[0] == player_addr[2]){
+ memcpy(&player_grids[2], &grid, 8);
+ }
+ else if(local_rx_buf[0] == player_addr[3]){
+ memcpy(&player_grids[3], &grid, 8);
+ }
+ else ;
+
+ tx_buf[2] = GAMEOVER_CALC;
+ tx_buf[1] = ALL_ADDR%256;
+ for(i = 0; i <select_pkt.players; i++){
+ tx_buf[1] = player_addr[i]%256;
+ bmac_addr_decode_dest_mac(player_addr[i]);
+ while(bmac_tx_pkt( tx_buf, tx_len)!=NRK_OK);
+ }
+ state = GAMEOVER_CALC;
+ printf( "Gameover " );
+ printf("And the winner is %d\r\n", local_rx_buf[0]);
+
+
+ }
+
+ else if(state == GAMEOVER_CALC && length == 10){
+ memcpy(&grid, &local_rx_buf[3], 8);
+ if(local_rx_buf[0] == player_addr[0]){
+ memcpy(&player_grids[0], &grid, 8);
+ player_grids_turned_in[0] = 1;
+ }
+ else if(local_rx_buf[0] == player_addr[1]){
+ memcpy(&player_grids[1], &grid, 8);
+ player_grids_turned_in[1] = 1;
+ }
+ else if(local_rx_buf[0] == player_addr[2]){
+ memcpy(&player_grids[2], &grid, 8);
+ player_grids_turned_in[2] = 1;
+ }
+ else if(local_rx_buf[0] == player_addr[3]){
+ memcpy(&player_grids[3], &grid, 8);
+ player_grids_turned_in[3] = 1;
+ }
+ int i, check;
+ check = 0;
+ for(i = 0; i<select_pkt.players; i++){
+ check+=player_grids_turned_in[i];
+ }
+ if(check == select_pkt.players){
+ //calculate and display scores
+ monome_comm_send_state(GAMEOVER_CHOICE);
+ state = GAMEOVER_CHOICE;
+ printf("all players turned in grids\r\n");
+ }
+ }
+
+
+ else if(state == GAMEOVER_CHOICE){
+ if(length == 3){
+ if(local_rx_buf[2] == 0){
+ state = GAMEPLAY;
+ tx_buf[2] = GAMEPLAY;
+ tx_buf[3] = 1;
+ while(bmac_tx_pkt(tx_buf, 4)!=NRK_OK);
+ for(i = 0; i <select_pkt.players; i++){
+ tx_buf[1] = player_addr[i]%256;
+ bmac_addr_decode_dest_mac(player_addr[i]);
+ while(bmac_tx_pkt( tx_buf, tx_len)!=NRK_OK);
+ }
+ num_plays_current_game++;
+ printf("play again!\r\n");
+ nrk_time_get(&start_time);
+ }
+ else if(local_rx_buf[2] == 1){
+ state = SELECT;
+ tx_buf[1] = ALL_ADDR%256;
+ bmac_addr_decode_dest_mac(ALL_ADDR);
+ tx_buf[2] = SELECT;
+ while(bmac_tx_pkt(tx_buf, 3)!=NRK_OK);
+ num_plays_current_game = 0;
+ printf("select another game\r\n");
+ }
+ else ;
+ }
+ }
+
+ bmac_rx_pkt_release();
+ nrk_led_clr(BLUE_LED);
+
+ }
+ nrk_led_clr(ORANGE_LED);
+ nrk_wait_until_next_period();
+
+ }
+
+}
+
+
+void
+nrk_create_taskset()
+{
+
+
+ TaskOne.task = Task1;
+ TaskOne.Ptos = (void *) &Stack1[NRK_APP_STACKSIZE-1];
+ TaskOne.Pbos = (void *) &Stack1[0];
+ TaskOne.prio = 2;
+ TaskOne.FirstActivation = TRUE;
+ TaskOne.Type = BASIC_TASK;
+ TaskOne.SchType = PREEMPTIVE;
+ TaskOne.period.secs = 0;
+ TaskOne.period.nano_secs = 250*NANOS_PER_MS;
+ TaskOne.cpu_reserve.secs = 0;
+ TaskOne.cpu_reserve.nano_secs = 170*NANOS_PER_MS;
+ TaskOne.offset.secs = 0;
+ TaskOne.offset.nano_secs= 0;
+ nrk_activate_task (&TaskOne);
+
+ TimerTask.task = timer_task;
+ TimerTask.Ptos = (void *) &TimerStack[NRK_APP_STACKSIZE-1];
+ TimerTask.Pbos = (void *) &TimerStack[0];
+ TimerTask.prio = 3;
+ TimerTask.FirstActivation = TRUE;
+ TimerTask.Type = BASIC_TASK;
+ TimerTask.SchType = PREEMPTIVE;
+ TimerTask.period.secs = 0;
+ TimerTask.period.nano_secs = 250*NANOS_PER_MS;
+ TimerTask.cpu_reserve.secs = 0;
+ TimerTask.cpu_reserve.nano_secs = 75*NANOS_PER_MS;
+ TimerTask.offset.secs = 0;
+ TimerTask.offset.nano_secs= 0;
+ nrk_activate_task (&TimerTask);
+
+
+ printf ("Create done\r\n");
+}
+
+inline void monome_comm_init(){
+ bmac_init (17);
+ /* rx schedules */
+ bmac_rx_pkt_set_buffer(rx_buf, RF_MAX_PAYLOAD_SIZE);
+ bmac_set_cca_thresh(-24);
+ bmac_addr_decode_set_my_mac(MY_ADDR);
+ bmac_addr_decode_enable();
+ bmac_auto_ack_enable();
+
+}
+
+inline void monome_setup_system(){
+ int i, j;
+ state = SYNC;
+ num_players = 0;
+ tx_buf[0] = MY_ADDR%256;
+ state_pkt.src = MY_ADDR%256;
+ state_pkt.dest = ALL_ADDR%256;
+ for(i = 0; i < MAX_NUM_PLAYERS; i++){
+ player_addr[i] = 0xf0;
+ initials_set[i] = 0;
+ player_grids_turned_in[i] = 0;
+ for(j = 0; j< 3; j++){
+ player_initials[i][j] = ' ';
+ }
+ for(j = 0; j<8; j++){
+ player_grids[i][j] = 0x08;
+ }
+ }
+
+
+}
+
+inline void monome_add_controller(uint8_t addr){
+ int i, already_player;
+ already_player = 0;
+ for(i = 0; i<num_players; i++){
+ if(addr == player_addr[i]){
+ already_player = 1;
+ }
+ }
+ if(already_player == 0){
+ /* consider code to add player back if player is lost */
+ player_addr[num_players] = addr;
+ sync_pkt.dest = player_addr[num_players]%256;
+ bmac_addr_decode_dest_mac(player_addr[num_players]);
+ sync_pkt.player = num_players;
+ printf("player number sent: %d\r\n", sync_pkt.player);
+ memcpy(&tx_buf, &sync_pkt, type(monome_comm_sync_pkt));
+ tx_len = type(monome_comm_sync_pkt);
+ while(bmac_tx_pkt( tx_buf, tx_len)!=NRK_OK);
+ num_players++;
+ if(num_players == 1)
+ state = SELECT;
+ printf("Synched new player: player %d\r\n", num_players);
+ }
+
+}
+
+inline void monome_validate_game(){
+ if(select_pkt.players > num_players || select_pkt.players == 0
+ || (select_pkt.players == 1 && select_pkt.game_type == COOPERATIVE) ){
+ monome_comm_send_state(SELECT);
+ printf("invalid game\r\n");
+ }
+ else{
+ state = PREGAME;
+ tx_buf[2] = state;
+ int i;
+ for(i = 0; i <select_pkt.players; i++){
+ tx_buf[1] = player_addr[i]%256;
+ bmac_addr_decode_dest_mac(player_addr[i]);
+ while(bmac_tx_pkt( tx_buf, tx_len)!=NRK_OK);
+ }
+ printf("valid game\r\n");
+
+ }
+ printf("Gameplay: number of players: | type: %d %d\r\n",
select_pkt.players, select_pkt.game_type);
+}
+
+inline void monome_comm_send_state(uint8_t state){
+ state_pkt.state = state;
+ tx_buf[1] = ALL_ADDR%256;
+ bmac_addr_decode_dest_mac(ALL_ADDR);
+ memcpy(&tx_buf, &state_pkt, type(monome_comm_state_pkt));
+ tx_len = type(monome_comm_state_pkt);
+ while(bmac_tx_pkt(tx_buf, tx_len)!=NRK_OK);
+}
+
+void monome_set_player_initials(uint8_t addr){
+ uint8_t i, check;
+ if(addr == player_addr[0]){
+ memcpy(&player_initials[0], &initials, 3); initials_set[0] = 1;
+ }
+ else if(addr == player_addr[1]){
+ memcpy(&player_initials[1], &initials, 3); initials_set[1] = 1;
+ }
+ else if(addr == player_addr[2]){
+ memcpy(&player_initials[2], &initials, 3); initials_set[2] = 1;
+ }
+ else if(addr == player_addr[3]){
+ memcpy(&player_initials[3], &initials, 3); initials_set[3] = 1;
+ }
+ else ;
+ check = 0;
+ printf("player initials:\r\n");
+ for(i = 0; i <select_pkt.players; i++){
+ if(initials_set[i]){
+ check++;
+ printf("player %d: %s\r\n", i, player_initials[i]);
+ }
+ }
+ if(check == select_pkt.players){
+
+ tx_buf[2] = GAMEPLAY;
+ tx_buf[3] = 1;
+ tx_len = 4;
+ for(i = 0; i <select_pkt.players; i++){
+ tx_buf[1] = player_addr[i]%256;
+ bmac_addr_decode_dest_mac(player_addr[i]);
+ while(bmac_tx_pkt( tx_buf, tx_len)!=NRK_OK);
+ }
+
+ state = GAMEPLAY;
+ nrk_time_get(&start_time);
+ printf( "Start\r\n" );
+ }
+ else ;
+ check = 0;
+ printf("player initials:\r\n");
+ for(i = 0; i <select_pkt.players; i++){
+ if(initials_set[i]){
+ check++;
+ printf("player %d: %s\r\n", i, player_initials[i]);
+ }
+ }
+ if(check == select_pkt.players){
+
+ tx_buf[2] = GAMEPLAY;
+ tx_buf[3] = 1;
+ tx_len = 4;
+ for(i = 0; i <select_pkt.players; i++){
+ tx_buf[1] = player_addr[i]%256;
+ bmac_addr_decode_dest_mac(player_addr[i]);
+ while(bmac_tx_pkt( tx_buf, tx_len)!=NRK_OK);
+ }
+
+ state = GAMEPLAY;
+ nrk_time_get(&start_time);
+ }
+}
=======================================
--- /dev/null
+++ /trunk/monome/console/main.d Tue Dec 21 13:38:34 2010
@@ -0,0 +1,17 @@
+main.o main.d : main.c ../../../../src/kernel/include/nrk.h \
+ ../../../../src/kernel/hal/include/nrk_cpu.h nrk_cfg.h \
+ ../../../../src/kernel/include/nrk_time.h \
+ ../../../../src/platform/firefly2_2/include/include.h \
+ ../../../../src/platform/firefly2_2/include/hal.h \
+ ../../../../src/platform/firefly2_2/include/hal_firefly2_2.h \
+ ../../../../src/radio/cc2420/include/hal_cc2420.h \
+ ../../../../src/radio/cc2420/hal/atmega1281/cc2420_mcu_hal.h \
+ ../../../../src/radio/cc2420/platform/firefly2_2/cc2420_platform_hal.h \
+ ../../../../src/radio/cc2420/include/basic_rf.h \
+ ../../../../src/kernel/include/nrk_events.h \
+ ../../../../src/platform/include/ulib.h \
+ ../../../../src/platform/firefly2_2/include/nrk_pin_define.h \
+ ../../../../src/platform/firefly2_2/include/nrk_platform_time.h \
+ ../../../../src/kernel/include/nrk_task.h \
+ ../../../../src/net/bmac/bmac.h \
+ ../../../../src/kernel/include/nrk_error.h
=======================================
--- /dev/null
+++ /trunk/monome/console/makefile Tue Dec 21 13:38:34 2010
@@ -0,0 +1,46 @@
+# Platform name cc2420DK, firefly, micaZ, firefly2, firefly2_2
+PLATFORM = firefly2_2
+
+
+# Target file name (without extension).
+TARGET = main
+
+# Set the Port that you programmer is connected to
+ PROGRAMMING_PORT = /dev/tty.usbserial-0000101DB # Default FireFly
serial port
+# PROGRAMMING_PORT = /dev/ttyUSB0 # Default micaZ serial port
+
+# Set this such that the nano-RK directory is the base path
+ROOT_DIR = ../../../..
+
+# Set platform specific defines
+# The following will be defined based on the PLATFORM variable:
+# PROG_TYPE (e.g. avrdude, or uisp)
+# MCU (e.g. atmega32, atmega128, atmega1281)
+# RADIO (e.g. cc2420)
+include $(ROOT_DIR)/include/platform.mk
+
+
+SRC = $(TARGET).c
+SRC += $(ROOT_DIR)/src/net/bmac/bmac.c
+#SRC += $(ROOT_DIR)/src/net/rt_link/rt_link.c
+#SRC += $(ROOT_DIR)/src/net/rt_link/rtl_scheduler.c
+#SRC += $(ROOT_DIR)/src/net/rt_link/rtl_debug.c
+
+# Add extra source files.
+# For example:
+# SRC += $(ROOT_DIR)/src/platform/$(PLATFORM_TYPE)/source/my_src1.c
+# SRC += $(ROOT_DIR)/src/platform/$(PLATFORM_TYPE)/source/my_src2.c
+
+# Add extra includes files.
+# For example:
+# EXTRAINCDIRS += $(ROOT_DIR)/src/platform/include
+#EXTRAINCDIRS += $(ROOT_DIR)/src/net/rt_link/
+#EXTRAINCDIRS += $(ROOT_DIR)/src/net/rt_link/platform/$(PLATFORM_TYPE)/
+
+EXTRAINCDIRS =
+EXTRAINCDIRS += $(ROOT_DIR)/src/net/bmac
+
+
+# This is where the final compile and download happens
+include $(ROOT_DIR)/include/platform/$(PLATFORM)/common.mk
+#platform/$(PLATFORM_TYPE)/source/my_src1.c
=======================================
--- /dev/null
+++ /trunk/monome/console/monome-splash.jpg Tue Dec 21 13:38:34 2010
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/monome/console/nrk_cfg.h Tue Dec 21 13:38:34 2010
@@ -0,0 +1,46 @@
+/***************************************************************
+* NanoRK CONFIG *
+***************************************************************/
+
+#ifndef __nrk_cfg_h
+#define __nrk_cfg_h
+
+// NRK_REPORT_ERRORS will cause the kernel to print out information about
+// missed deadlines or reserve violations
+#define NRK_REPORT_ERRORS
+// NRK_HALT_ON_ERRORS will cause the kernel to freeze on errors so that
+// it is easier to see debugging messages.
+#define NRK_HALT_ON_ERROR
+
+// NRK_STACK_CHECK adds a little check to see if the bottom of the stack
+// has been over written on all suspend calls
+#define NRK_STACK_CHECK
+
+// Leave NRK_NO_POWER_DOWN define in if the target can not wake up from
sleep
+// because it has no asynchronously clocked
+// #define NRK_NO_POWER_DOWN
+
+
+
+#define NRK_MAX_TASKS 4 // Max number of tasks in your
application
+#define NRK_N_SYS_TASKS 1 // you need at least the idle task
+
+
+#define NRK_TASK_IDLE_STK_SIZE 128 // Idle task stack size min=32
+#define NRK_APP_STACKSIZE 128
+#define NRK_KERNEL_STACKSIZE 256
+#define NRK_MAX_RESOURCE_CNT 1
+
+
+#endif
+in if the target can not wake up from sleep
+// because it has no asynchronously clocked
+// #define NRK_NO_POWER_DOWN
+
+
+
+#define NRK_MAX_TASKS 4 // Max number of tasks in your
application
+#define NRK_N_SYS_TASKS 1 // you need at least the idle task
+
+
+#define NRK_TASK_IDLE_STK_S
=======================================
--- /dev/null
+++ /trunk/monome/console/sketchit_console.py Tue Dec 21 13:38:34 2010
@@ -0,0 +1,162 @@
+#! /usr/bin/python
+
+import wx
+import serial
+
+import random
+
+ID_ABOUT = 101
+ID_EXIT = 110
+ID_HELP = 100
+ID_SCORES = 111
+ID_STATIC_BOX = 1000
+
+Patterns =
['xxxxxxxx\nxxxxxxxx\nxxxxxxxx\nxxxxxxxx\nxxxxxxxx\nxxxxxxxx\nxxxxxxxx\nxxxxxxxx\n',
+ 'x000000x\n0x0000x0\n00x00x00\n000xx000\n000xx000\n00x00x00\n0x0000x0\nx000000x\n',
+ '000xx000\n000xx000\n000xx000\nxxxxxxxx\nxxxxxxxx\n000xx000\n000xx000\n000xx000\n',
+ 'xxxxxxxx\nx000000x\nx000000x\nx000000x\nx000000x\nx000000x\nx000000x\nxxxxxxxx\n']
+
+pattern = ""
+GameOver = False
+GameStarted = False
+Reset = False
+GameState = "Game Status waiting"
+
+Scores = { "Player1": 0, "Player2": 0, "Player3": 0, "Player4": 0 }
+
+serport = serial.Serial( port = "/dev/ttyUSB0", baudrate = 115200, timeout
= 2 )
+
+class sketchItMainWindow( wx.Frame ):
+ def __init__( self, parent, id, title ):
+ wx.Frame.__init__( self, parent, wx.ID_ANY, title, size = ( 960,
800 ), style = wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_RESIZE )
+ bmpImage = wx.Image( name = "monome-splash.jpg" ).ConvertToBitmap()
+ self.sketchItSplash = wx.SplashScreen( bmpImage,
wx.SPLASH_CENTRE_ON_PARENT | wx.SPLASH_TIMEOUT, 3000, parent )
+ self.CreateStatusBar()
+ self.timer = wx.Timer( self )
+ self.Bind( wx.EVT_TIMER, self.ReadSerial, self.timer )
+ fileMenu = wx.Menu()
+ aboutMenu = wx.Menu()
+ aboutMenu.Append( ID_HELP, "&Help", "Help menu" )
+ aboutMenu.Append( ID_ABOUT, "&About", "About Sketch It!" )
+ fileMenu.Append( ID_SCORES, "&Scores", "Check out the High scores
in Sketch It!" )
+ fileMenu.AppendSeparator()
+ fileMenu.Append( ID_EXIT, "&Quit", "Quit Sketch It!" )
+ sketchItMenuBar = wx.MenuBar()
+ sketchItMenuBar.Append( fileMenu, "&File" )
+ sketchItMenuBar.Append( aboutMenu, "&About" )
+ self.SetMenuBar( sketchItMenuBar )
+ wx.EVT_MENU( self, ID_SCORES, self.OnScores )
+ wx.EVT_MENU( self, ID_HELP, self.OnHelp )
+ wx.EVT_MENU( self, ID_ABOUT, self.OnAbout )
+ wx.EVT_MENU( self, ID_EXIT, self.OnQuit )
+ self.timer.Start( 50 )
+ self.Show( True )
+
+ def OnScores( self, event ):
+ ScoreDisplay = "Player 1: " + str(Scores["Player1"]) + "\nPlayer
2: " + str(Scores["Player2"]) + "\nPlayer 3: " + str(Scores["Player3"]) \
+ + "\nPlayer 4: " + str(Scores["Player4"]) + "\n"
+ ScoreBox = wx.MessageDialog( self, ScoreDisplay, "High Scores",
wx.OK)
+ ScoreBox.ShowModal()
+ ScoreBox.Destroy()
+
+ def OnHelp( self, event ):
+ dbox = wx.MessageDialog( self, "Goal of the game:\n\nDraw the
pattern that is displayed on the console.\n" \
+ "\nIn the cooperative mode, work
along with your teammate, share the pattern as you want" \
+ "but finally get the pattern onto one
board.\n" \
+ "\nIn the competitive mode, compete
with each other either as teams or individually." \
+ "The last one to get the pattern is a
rotten egg!", "Help Menu", wx.OK )
+ dbox.ShowModal()
+ dbox.Destroy()
+
+ def OnAbout( self, event ):
+ dbox = wx.MessageDialog( self, "Sketch It! is a multiplayer
pattern matching game created as a semester project for ESE519 course at" \
+ " the University of
Pennsylvania.", "About Sketch It!", wx.OK )
+ dbox.ShowModal()
+ dbox.Destroy()
+
+ def OnQuit( self, event ):
+ self.Close( True )
+
+ def ReadSerial( self, event ):
+ GameStatusBox = wx.StaticBox( self, label = 'Real Time Game
Status', id = -1, pos = ( 0, 0 ), size = ( 475, 475 ), name
= "GameStatusBox" )
+# if ( serport.inWaiting() > 0 ):
+ x = serport.readline()
+ pattern = self.parseData(x)
+
+ if ( GameStarted ):
+ GameState = "Game Started\n"
+ elif ( GameOver ):
+ GameState = "Game Over\n"
+ elif ( Reset ):
+ GameState = "Game Reset\n"
+ else:
+ GameState = "Yet to start game\n"
+
+ if ( type(pattern) != int and pattern[:7] == "Synched" ):
+ control_pl1 = wx.TextCtrl( self, -1, pattern, size = (200,
200), pos = (28, 30), style = wx.TE_READONLY | wx.TE_MULTILINE |
wx.TE_CENTRE )
+ control_pl2 = wx.TextCtrl( self, -1, pattern, size = (200,
200), pos = (250, 30), style = wx.TE_READONLY | wx.TE_MULTILINE |
wx.TE_CENTRE )
+ control_pl3 = wx.TextCtrl( self, -1, pattern, size = (200,
200), pos = (28, 250), style = wx.TE_READONLY | wx.TE_MULTILINE |
wx.TE_CENTRE )
+ control_pl4 = wx.TextCtrl( self, -1, pattern, size = (200,
200), pos = (250, 250), style = wx.TE_READONLY | wx.TE_MULTILINE |
wx.TE_CENTRE )
+
+ if ( type(pattern) == int ):
+ BasePatternBox = wx.StaticBox( self, label = 'Base Pattern',
id = -1, pos = ( 485, 0 ), size = ( 475, 475 ), name = "BasePatternBox" )
+ control_BP = wx.TextCtrl( self, -1, Patterns[pattern], size =
(430, 420), pos = (510, 30), style = wx.TE_READONLY | wx.TE_MULTILINE |
wx.TE_CENTRE )
+
+ if ( pattern == "Game Started" or pattern == "Game Over"
or "Gameplay" in pattern or "State" in pattern ):
+ GameStateBox = wx.StaticBox( self, label = 'Game State', id =
-1, pos = ( 0, 480 ), size = ( 960, 190 ), name = "GameStateBox" )
+ control_GS = wx.TextCtrl( self, -1, pattern, size = (800,
100), pos = (70, 530), style = wx.TE_CENTRE | wx.TE_MULTILINE |
wx.TE_READONLY )
+
+ def parseData( self, x ):
+ print x[0]
+ print x[-3]
+ pattern = ""
+ if x[:7] == 'Synched':
+ pattern = "Synched player" + x[-3] + "\n"
+ if x[:7] == 'Maximum':
+ pattern = "Maximum of 4 players synched"
+ if x[:8] == 'Gameplay':
+ if x[-3] == '0':
+ pattern = "Gameplay selected: " + x[-5] + "player
Competitive"
+ if x[-3] == '1':
+ pattern = "Gameplay selected: " + x[-5] + "player
Cooperative"
+ if x[:5] == 'Start':
+ pattern = "Game Started"
+ if x[:7] == 'Pattern':
+ if x[-3] == '0':
+ pattern = 0
+ if x[-3] == '1':
+ pattern = 1
+ if x[-3] == '2':
+ pattern = 2
+ if x[-3] == '3':
+ pattern = 3
+ if 'Gameover' in x:
+ pattern = "Game Over"
+ if ( len( x ) > 12):
+ pattern += x[8:]
+ winningPlayer = "Player" + x[-3]
+ Scores["winningPlayer"] += 10
+ else:
+ pattern += "Game timed out\n"
+ if x[:5] == 'state' and x[-3] == '5':
+ pattern = "Game Over"
+ if x[:5] == 'state' and x[-3] == '6':
+ pattern = "Game Over"
+ if x[:5] == 'state' and x[-3] == '0':
+ pattern = "Sync State"
+ if x[:5] == 'state' and x[-3] == '1':
+ pattern = "Select State"
+ if x[:5] == 'state' and x[-3] == '2':
+ pattern = "Pre-game State"
+ if x[:5] == 'state' and x[-3] == '3':
+ pattern = "In Game State"
+ return pattern
+
+
+app = wx.PySimpleApp()
+frame = sketchItMainWindow( None, -1, "Sketch It!" )
+
+# for p in Patterns:
+# for p1 in p:
+
+app.MainLoop()
=======================================
--- /dev/null
+++ /trunk/monome/console/sketchit_serial_read.py Tue Dec 21 13:38:34 2010
@@ -0,0 +1,51 @@
+#! /usr/bin/python
+
+class sketchitSerial :
+ def __init__( self ):
+ pass
+ Pattern = 0
+ def display( self, serport ):
+ x = serport.readline()
+ print "Reading Serial Port"
+ if x[:7] == 'Synched':
+ print "Synched player" + x[-1] + "\n"
+ if x[:7] == 'Maximum':
+ print "Maximum of 4 players synched"
+ if x[:8] == 'Gameplay':
+ if x[-1] == '0':
+ print "Gameplay selected: 2 player Competitive"
+ GamePlay = 0
+ if x[-1] == '1':
+ print "Gameplay selected: 2 player Cooperative"
+ GamePlay = 1
+ if x[-1] == '2':
+ print "Gameplay selected: 3 player Cooperative"
+ GamePlay = 2
+ if x[-1] == '3':
+ print "Gameplay selected: 4 player Cooperative"
+ GamePlay = 3
+ if x[-1] == '4':
+ print "Gameplay selected: 4 player Competitive - Node
1 and Node 2 are team A, Node 3 and Node 4 are team B"
+ GamePlay = 4
+ if x[:7] == 'Players':
+ Players = x
+ if x[:5] == 'Start':
+ GameStarted = True
+ if x[:7] == 'Pattern':
+ if x[-1] == '0':
+ print Pattern
+ Pattern = 0
+ if x[-1] == '1':
+ Pattern = 1
+ if x[-1] == '2':
+ Pattern = 2
+ if x[-1] == '3':
+ Pattern = 3
+ if x[:8] == 'Gameover':
+ GameOver = True
+ if x[:6] == 'Scores':
+ printScores = True
+ Scores = x
+ if x[:5] == 'Reset':
+ Reset = True
+
=======================================
--- /trunk/monome/controller_base_comm/base_station/main.c Sat Dec 11
12:36:09 2010
+++ /trunk/monome/controller_base_comm/base_station/main.c Tue Dec 21
13:38:34 2010
@@ -40,12 +40,13 @@
/* game states and controller tracking */
#define MAX_NUM_PLAYERS 4
+#define MAX_NUM_OF_PATTERNS 4
uint8_t state, num_players;
uint8_t player_tx[MAX_NUM_PLAYERS];
uint8_t player_rx[MAX_NUM_PLAYERS];
-#define SYNC 1
+#define SYNC 0
#define SELECT (1<<1)
#define PREGAME (1<<2)
@@ -62,6 +63,11 @@
uint8_t game_type;
} monome_comm_select_pkt;
+typedef struct{
+ uint8_t pattern_no;
+} monome_pattern_selected;
+
+monome_pattern_selected pattern;
monome_comm_sync_pkt sync_pkt;
uint8_t tx_len;
@@ -75,6 +81,7 @@
inline void monome_comm_init();
inline void monome_setup_system();
inline void monome_add_controller(uint8_t slot);
+inline void monome_select_pattern();
void nrk_create_taskset();
uint8_t tx_buf[RF_MAX_PAYLOAD_SIZE];
@@ -123,6 +130,7 @@
while(1){
+ printf ( "base station\r\n" );
if( rtl_rx_pkt_check()!=0 )
{
nrk_led_set(BLUE_LED);
@@ -134,11 +142,11 @@
monome_add_controller(slot);
}
else{
- printf("maximum number of players synced\r\n");
+ printf("Maximum number of players synced\r\n");
}
}
if(length == type(monome_comm_select_pkt)){
-
+
}
nrk_led_clr(BLUE_LED);
}
@@ -238,11 +246,20 @@
rtl_tx_pkt( tx_buf, tx_len, player_rx[num_players]);
rtl_wait_until_tx_done(player_rx[num_players]);
num_players++;
- printf("added new player: player %d\r\n", num_players);
+ printf("Synched new player: player %d\r\n", num_players);
}
}
-
-
-
+inline void monome_select_pattern()
+{
+ uint8_t i;
+ pattern.pattern_no = rand() % MAX_NUM_OF_PATTERNS;
+ memcpy( &tx_buf[PKT_DATA_START], &pattern, sizeof(
monome_pattern_selected ) );
+ tx_len = type( monome_pattern_selected );
+ for ( i = 0; i < num_players; i++ ){
+ rtl_tx_pkt( tx_buf, tx_len, player_rx[i] );
+ rtl_wait_until_tx_done( player_rx[i] );
+ }
+ printf( "Pattern Selected: %d", pattern.pattern_no );
+}
=======================================
--- /trunk/monome/controller_base_comm/base_station/main.elf Sat Dec 11
12:36:09 2010
+++ /trunk/monome/controller_base_comm/base_station/main.elf Tue Dec 21
13:38:34 2010
Binary file, no diff available.
=======================================
--- /trunk/monome/controller_base_comm/base_station/main.hex Sat Dec 11
12:36:09 2010
+++ /trunk/monome/controller_base_comm/base_station/main.hex Tue Dec 21
13:38:34 2010
@@ -1,18 +1,18 @@
-:100000000C948F010C94E72E0C94B92E0C94AE0135
-:100010000C94AE010C94AE010C94AE010C94AE01A4
-:100020000C94AE010C94152F0C94AE010C94AE01FF
-:100030000C94AE010C949A2C0C94AE010C949A2C56
-:100040000C94AE010C94CD2C0C94AE010C94AE012A
-:100050000C94AE010C94AE010C94AE010C94AE0164
-:100060000C94AE010C94AE010C94AE010C94AE0154
-:100070000C94AE010C94AE010C94AE010C94AE0144
-:100080000C94D72C0C94AE010C94AE010C94AE01E0
-:100090000C94AE010C94AE010C94AE010C94AE0124
-:1000A0000C94AE010C94AE010C94AE010C94AE0114
-:1000B0000C94AE010C94AE010C94AE010C94AE0104
-:1000C0000C94AE010C94AE010C94AE01321F381F9B
-:1000D0003B1F3E1F411F441F4A1F471F4D1F501FFC
-:1000E000531F591F5C1F5F1F621F561F2F1F351F95
+:100000000C949A010C941F2E0C94B9010C94B90114
+:100010000C94B9010C94B9010C94B9010C94B90178
+:100020000C94B9010C94512E0C94B9010C94B901A3
+:100030000C94B9010C94832C0C94B9010C94832C6E
+:100040000C94B9010C94B62C0C94B9010C94B90120
+:100050000C94B9010C94B9010C94B9010C94B90138
+:100060000C94B9010C94B9010C94B9010C94B90128
+:100070000C94B9010C94B9010C94B9010C94B90118
+:100080000C94C02C0C94B9010C94B9010C94B901D6
+:100090000C94B9010C94B9010C94B9010C94B901F8
+:1000A0000C94B9010C94B9010C94B9010C94B901E8
+:1000B0000C94B9010C94B9010C94B9010C94B901D8
+:1000C0000C94B9010C94B9010C94B901D01ED61E40
+:1000D000D91EDC1EDF1EE21EE81EE51EEB1EEE1E14
+:1000E000F11EF71EFA1EFD1E001FF41ECD1ED31EAC
:1000F00052542D4C696E6B204552524F523A206338
:1001000072656174696E67207478207369676E61C7
:100110006C206661696C65640D0A0052542D4C694F
@@ -47,1664 +47,1636 @@
:1002E000206E6F7420646566696E6564206173209A
:1002F0006C6172676520656E6F7567682100293AC9
:1003000020002A4E524B204552524F5228000D0ACF
-:10031000535441434B2044554D500D0A00001124C5
-:100320001FBECFEFD1E2DEBFCDBF13E0A0E0B2E051
-:10033000EAEBF9E600E00BBF02C007900D92A03196
-:10034000B107D9F718E0A0E1B3E001C01D92AE31CA
-:10035000B107E1F70E9457030C94DC340C94052D8F
-:1003600081E08093F70310920F0420E030E0F90160
-:10037000E35FFA4F8FEF8083F901E357F94F8083F2
-:100380002F5F3F4F2430310591F70895982F8091CA
-:100390000F04A82FBB27EDE8F6E040E050E09D01F8
-:1003A0002E0F3F1F06C08081981711F441E050E0E6
-:1003B0003196E217F307B9F7452B09F073C0943073
-:1003C00091F0953018F4923031F505C0963099F0DF
-:1003D000983009F518C0FD01E357F94F9083A35FEA
-:1003E000BA4F85E017C0FD01E357F94F9083A35F33
-:1003F000BA4F87E00FC0FD01E357F94F9083A35F29
-:10040000BA4F89E007C0FD01E357F94F9083A35F1E
-:10041000BA4F8BE08C93E0910F04FF27E35FFA4F14
-:1004200080810E94A8038823B1F780910F048093F4
-:10043000850499279F938F9380E092E09F938F93F9
-:100440000E94D632809185048093170584E08093C2
-:100450009605E0910F04FF27E35FFA4F408164E0C7
-:1004600084E195E00E94C007E0910F04FF27E35F5D
-:10047000FA4F80810E94640A80910F048F5F8093FD
-:100480000F0499279F938F9389E192E09F938F9315
-:100490000E94D6328DB79EB708960FB6F8949EBFCD
-:1004A0000FBE8DBF089582E00E948B0441E062E0A0
-:1004B00080E00E94D60A41E064E080E00E94D60A13
-:1004C00041E066E080E00E94D60A41E068E080E01A
-:1004D0000E94D60A41E063E081E00E94D60A41E032
-:1004E00065E081E00E94D60A41E067E081E00E9479
-:1004F000D60A41E069E081E00E94D60A41E06BE063
-:1005000081E00E94D60A0E94470464E781E194E0FA
-:100510000E94E203089588EE92E09093DA038093BC
-:10052000D90386E095E09093D6038093D50387E8BE
-:1005300094E09093D8038093D70382E08093DC0308
-:1005400081E08093DB038093DD038093DE0381E011
-:1005500090E0A0E0B0E08093DF039093E003A093ED
-:10056000E103B093E2031092E3031092E4031092CC
-:10057000E5031092E6031092E7031092E80310924D
-:10058000E9031092EA0380E091EEA5EFB5E08093D5
-:10059000EB039093EC03A093ED03B093EE03109262
-:1005A000EF031092F0031092F1031092F2031092F5
-:1005B000F3031092F4031092F5031092F60384ED06
-:1005C00093E00E947E2687E392E00E94F63208952F
-:1005D0008F929F92AF92BF92CF92DF92EF92FF9253
-:1005E0000F931F93CF93DF93CDB7DEB723970FB64B
-:1005F000F894DEBF0FBECDBF0E9453020E94B0012F
-:1006000002C00E9440260E948E038823D1F322E07C
-:10061000822E912C8C0E9D1E93E0A92EB12CAC0E37
-:10062000BD1E6E010894C11CD11C84E4E82E82E03A
-:10063000F82E01E612E00E94C3038823A9F181E0AD
-:1006400090E00E94781BA401B501C6010E949D0A9A
-:10065000898199279F938F938A8199279F938F935D
-:10066000FF92EF920E94D6328DB79EB706960FB6D4
-:10067000F8949EBF0FBE8DBF8981843089F40E949B
-:10068000A5038091F703813041F480910F048430F9
-:1006900020F48A810E94C60103C0C8010E94F6327C
-:1006A00081E090E00E945B1B0E944026C4CFCFEF08
-:1006B000D1E2DEBFCDBF0E94BB1787E090E00E9471
-:1006C000F01B83E892E00E94F6320E944B1E80E00D
-:1006D00090E00E945B1B81E090E00E945B1B82E047
-:1006E00090E00E945B1B83E090E00E945B1B20E097
-:1006F00030E040E050E060E070E080E090E00E9498
-:10070000E2270E94F2030E948B020E94EB1D80E010
-:1007100090E00C94DC348FEF9FEF089580912303D9
-:10072000813019F481E090E008958FEF9FEF0895F4
-:100730008091290790912A0708958091A90399270C
-:1007400008958091880599270895109213050895BA
-:10075000282F813231F480911004992787FD9095DC
-:1007600008958091A4039091A503A091A603B09150
-:10077000A70304C0B695A795979587952A95D2F7B4
-:1007800081709070089580911305992787FD909549
-:1007900008959093220380932103089590938A05EE
-:1007A000809389050895909312058093110508950B
-:1007B0009093AC038093AB03089590938D05809341
-:1007C0008C050895662359F0009749F0909305042D
-:1007D000809304046093030481E090E008958FEF18
-:1007E0009FEF08950F931F9384E098E09093B303D5
-:1007F0008093B2030DEA13E040E850E064E273E056
-:10080000C8010E94F12F84E18093B50381E08093B9
-:10081000B4038093B6038093B7031092B803109289
-:10082000B9031092BA031092BB038BE49CE1A6E8D3
-:10083000B0E08093BC039093BD03A093BE03B0933C
-:10084000BF031092C0031092C1031092C203109212
-:10085000C3031092C4031092C5031092C6031092F2
-:10086000C7031092C8031092C9031092CA031092D2
-:10087000CB031092CC031092CD031092CE031092B2
-:10088000CF03C8010E947E261F910F910895809189
-:100890008B058230B1F48091D0039091D103A09167
-:1008A000D203B091D30380FF07C080912E07992710
-:1008B0008F70907005972CF044E060E081E00E941A
-:1008C000D60A0E94820C82E08093230308950F933E
-:1008D0001F93CF93DF93062F8093AA038823B1F051
-:1008E0001FE1CFE1D0E0C81BD1090BC0402F612F21
-:1008F00080E00E94D60A402F612F81E00E94D60A34
-:100900001150812F9927C817D90784F3DF91CF9110
-:100910001F910F9108951F93182F0E94A520809377
-:1009200002078F3F19F48BE191E008C00E94A520D7
-:1009300080935E078F3F69F480EF90E00E94111C66
-:10094000E091F507F091F60760858EE00E949E1F0A
-:100950007DC01092050410920404109203040E94BA
-:10096000DA2B109208041092910610921C07109234
-:100970001B07109204071092030781E094E0909304
-:100980001807809317071092A90310938B051092F4
-:10099000AA031092100410921205109211051092E1
-:1009A000AC031092AB0310928D0510928C0510923F
-:1009B0008A0510928905109222031092210384E681
-:1009C0008093200380E49FE190931F0380931E0394
-:1009D00080EA9FE090931D0380931C038AE080933C
-:1009E0001A0380E899E19093190380931803EEE2CB
-:1009F000F7E0119287E0EE33F807D9F71092070578
-:100A0000109208051092090510920A051092D00361
-:100A10001092D1031092D2031092D30310921305B7
-:100A20001092A4031092A5031092A6031092A7039C
-:100A30000E94A40B209118033091190360911A03AE
-:100A400040E254E28FEF93E00E94A8161F910895B0
-:100A50000E94980E08951F93CF93DF93182F8091D3
-:100A6000A903882309F484C0E091AB03F091AC039F
-:100A7000309711F0812F0995C12FDD27FE01EE0F70
-:100A8000FF1FEC0FFD1FEE56F94F8181928190936D
-:100A9000920580939105808180939005E091910566
-:100AA000F09192058091170790911807892F992747
-:100AB0008083E0919105F0919205809117079091C4
-:100AC00018078183E0919105F0919205809191063C
-:100AD000828380919005833011F010E008C0E0918E
-:100AE0009105F091920582818068828311E04091A6
-:100AF0001C0350911D0360910D0770910E078EE845
-:100B000095E00E94D61321E030E040E050E00C2E4A
-:100B100004C0220F331F441F551F0A94D2F720959B
-:100B20003095409550958091A4039091A503A09194
-:100B3000A603B091A70382239323A423B523809314
-:100B4000A4039093A503A093A603B093A7032091B9
-:100B5000AA0380E290E0821B9109C817D90714F01C
-:100B600010921004112321F480915E070E94082244
-:100B7000DF91CF911F9108950F931F93CF93DF9330
-:100B8000CDB7DEB722970FB6F894DEBF0FBECDBF4C
-:100B9000082F60911A038FEF93E00E948A160E943B
-:100BA000350F0E94962C99279A83898389819A818F
-:100BB00004969A8389830BC00E94962C29813A81DE
-:100BC00099272817390718F40E94490F56C00E9428
-:100BD000680F882389F30E94962C99279A8389832A
-:100BE0000E94962C99279A83898389819A810596F8
-:100BF0009A83898308C00E94962C29813A8199277B
-:100C00002817390728F00E94720F182F882399F3AC
-:100C10000E94490F113089F5109313050093860443
-:100C2000E0910404F091050480819927982F88278A
-:100C300021813327282B392B809117079091180792
-:100C40002817390721F03093180720931707E091F0
-:100C50001105F0911205309711F0802F0995E09160
-:100C60000404F0910504828187FD05C0809102078C
-:100C70000E94082202C01092130522960FB6F89423
-:100C8000DEBF0FBECDBFDF91CF911F910F910895B1
-:100C9000CF93DF93EC01FA01842F8F7121E030E0D4
-:100CA00040E050E004C0220F331F441F551F8A95B7
-:100CB000D2F78091D0039091D103A091D203B0914B
-:100CC000D303282339234A235B232115310541050A
-:100CD000510519F080E090E013C0D093F706C0935F
-:100CE000F6066093F506F0930A04E093090460E0C9
-:100CF000CF010E94B70B81E08093880581E090E0EE
-:100D0000DF91CF910895AF92BF92CF92DF92EF9291
-:100D1000FF920F931F93CF93DF93CDB7DEB7229748
-:100D20000FB6F894DEBF0FBECDBFCC24DD24EE2479
-:100D30006FEFA62E63E0B62EE0910404F091050457
-:100D40008FEF8083E0910404F0910504818360912A
-:100D50001A03C5010E948A160E94350F1092A9033A
-:100D60008AEF0E94272C10E01EC00E94962C1817B4
-:100D7000D1F00E94962C182F0894C11CD11C21E19F
-:100D8000C21627E2D20678F010929106E39485E02D
-:100D90008E1518F0CC24DD240BC00E94782FCC24B3
-:100DA000DD24EE2405C00E94680FF82E8823E9F2A6
-:100DB0000E94DE2B0E94E62B9A8389830E94962C48
-:100DC000082F11270C5F1F4FFF2061F006C00E9403
-:100DD000962C99270817190728F00E94720FF82EF1
-:100DE0008823A9F30E94490F21E0F21609F0A4CF4D
-:100DF0008091020418160CF09FCFF0921305E09139
-:100E00000404F0910504808199279093180780933A
-:100E100017078091170790911807982F88279093AC
-:100E200018078093170720911707309118078181C1
-:100E30009927822B932B9093180780931707228171
-:100E4000122F1F7780919106811730F08F3608F4AA
-:100E500073CF1A3008F070CF809117079091180760
-:100E60008F718093860427FD18C02091860480919D
-:100E7000070590910805A0910905B0910A0504C0E5
-:100E8000B695A795979587952A95D2F780FF05C0C7
-:100E9000809102070E94082202C0109213058091DF
-:100EA0001707909118078F71809386048091170718
-:100EB00090911807019790932A0780932907109221
-:100EC00008041093910681E08093A90380911B0789
-:100ED00090911C070E94F80B8091170790911807BA
-:100EE0008050944030F48091170790911807029732
-:100EF00018F48EEF93E005C08091170790911807C2
-:100F0000029790931C0780931B0760E080911B075A
-:100F100090911C070E94B70B0E94820C0E94012C2A
-:100F20000E94182C87E00E940C2C66E67CE680E08C
-:100F300090E00E941B2D0E94182C0E940F2C0E94F2
-:100F4000DE2B0E94E62B90930E0780930D07809175
-:100F5000A903992722960FB6F894DEBF0FBECDBF26
-:100F6000DF91CF911F910F91FF90EF90DF90CF9085
-:100F7000BF90AF90089580931A030E94A51608951C
-:100F80001F93CF93DF93EC01162F413261F40E943F
-:100F900040326091AA0377270E9478344FE1481BC2
-:100FA00081E080931004842F9927FC01EE0FFF1F2E
-:100FB000E80FF91FEE56F94FD283C183108321E069
-:100FC00030E040E050E004C0220F331F441F551FA3
-:100FD0008A95D2F78091A4039091A503A091A603CE
-:100FE000B091A703822B932BA42BB52B8093A40342
-:100FF0009093A503A093A603B093A70381E090E08C
-:10100000DF91CF911F9108956F927F928F929F925F
-:10101000AF92BF92DF92EF92FF920F931F93CF9305
-:10102000DF93109223030E9440268091230388239C
-:10103000D1F381E0809323031092980510929705D5
-:1010400080E193E00E94592910E1612E13E0712E96
-:10105000B5EF8B2EB6E09B2EA8EFAA2EA3E0BA2EFA
-:101060000E94E62B90930E0780930D07C3010E9408
-:1010700059298091170790911807909398058093AC
-:1010800097058150944021F410929805109297058D
-:10109000809117079091180790932A07809329074A
-:1010A00080911707909118078050944008F1109292
-:1010B0001807109217078091030790910407019673
-:1010C0009093040780930307E0912103F09122039A
-:1010D000309729F0809103079091040709950E94A9
-:1010E000820C80918B05823019F481E08093A903F2
-:1010F000E0918905F0918A05309729F080911707D2
-:1011000090911807099580918B05882381F420918F
-:1011100017073091180780911B0790911C070196C3
-:101120002817390721F40E9483068823E1F3809170
-:101130001707909118070E942D0C813059F4E09107
-:101140008C05F0918D05309729F0809117079091CB
-:101150001807099580911707909118070E94A40C11
-:10116000EC0180911707909118070E94610C00977D
-:1011700039F0209709F40AC18C179D0758F406C16D
-:10118000209741F48091170790911807C0E0D4E0B0
-:10119000C81BD90B8091170790911807FFE1DF2E2C
-:1011A000D82280918B05823099F480911707909115
-:1011B0001807892B09F0ECC0809191068F5F80930E
-:1011C000910687FFE5C010929106E2C010920804D4
-:1011D0004D2D5527E1E0EE2EF12C012D112D042E81
-:1011E00004C0EE0CFF1C001F111F0A94D2F780915F
-:1011F0000804882309F043C08091D0039091D10363
-:10120000A091D203B091D3038E219F21A023B123BB
-:101210000097A105B10599F18091A4039091A503D0
-:10122000A091A603B091A7038E219F21A023B123F3
-:101230000097A105B10501F59092FC038092FB0394
-:101240008091F70680688093F70683E08093FA0325
-:101250002091AA0380E290E0821B910984179507F0
-:1012600034F480911004882339F441E201C04D2DFB
-:1012700063E0C5010E94C00781E0809308042091CB
-:1012800017073091180780911B0790911C072817AA
-:10129000390709F448C08091D0039091D103A091FF
-:1012A000D203B091D3032091A4033091A5034091C0
-:1012B000A6035091A70382239323A423B5238E2151
-:1012C0009F21A023B1230097A105B10521F08D2D09
-:1012D0000E942B0528C08091070590910805A091D8
-:1012E0000905B0910A058E219F21A023B123009703
-:1012F000A105B10541F080911305882321F48D2DBE
-:101300000E94BC0510C020911707309118078091EA
-:10131000090490910A042817390729F481E20E94F0
-:101320002B0510928805209117073091180780919E
-:101330001B0790911C072817390791F480918B05A2
-:10134000823071F080911707909118070196909361
-:1013500018078093170785E090E00E94AB2580CEA8
-:1013600080911707909118078C0F9D1F9093180775
-:101370008093170780E090E00E945B1BCE010E94E3
-:101380000D2680E090E00E94781B6ACEEC0102CF2F
-:10139000DD2009F41BCF1CCF6F927F928F929F921A
-:1013A000AF92BF92CF92DF92EF92FF920F931F9373
-:1013B000CF93DF93CDB7DEB728970FB6F894DEBF93
-:1013C0000FBECDBF3E010894611C711CC3010E9479
-:1013D00059298090100390901103A0901203B090AF
-:1013E0001303C0901403D0901503E0901603F090FF
-:1013F000170309811A812B813C814D815E816F81A8
-:101400007885C3010E94D42669817A818B819C8171
-:1014100020E03AEC4AE95BE30E9445349B01AC01D1
-:101420006D817E818F819885620F731F841F951F48
-:1014300028EA3BE246E850E00E948B34DA01C90119
-:101440002091970530919805820F931F28960FB62B
-:10145000F894DEBF0FBECDBFDF91CF911F910F91EA
-:10146000FF90EF90DF90CF90BF90AF909F908F90C4
-:101470007F906F900895809102070E942E218091A5
-:101480005E070E942E2121E030E040E050E0CA01DA
-:10149000B90100905E0704C0660F771F881F991F6F
-:1014A0000A94D2F70090020704C0220F331F441F92
-:1014B000551F0A94D2F7622B732B842B952B0E9415
-:1014C0005A2381E090E008951F93182F80915E07C2
-:1014D0000E942E210FC061E070E080E090E000905B
-:1014E0005E0704C0660F771F881F991F0A94D2F702
-:1014F0000E945A23812F0E94A803882361F781E06C
-:1015000090E01F910895809102070E942E21809102
-:101510001305882379F461E070E080E090E00090AA
-:10152000020704C0660F771F881F991F0A94D2F71D
-:101530000E945A2381E090E00895CF93DF93FC014D
-:10154000DB01EA0180911305882331F410821C929B
-:10155000188280E090E00DC0809102048083809129
-:1015600007048C9380918604888380910404909171
-:101570000504DF91CF91089580912303813019F004
-:101580008FEF9FEF089580910207992787FD90952F
-:10159000089580912303813019F08FEF9FEF089514
-:1015A00080915E07992787FD909508951F93142FCA
-:1015B000403108F052C0603208F04FC0E62FFF27DC
-:1015C00021E030E040E050E00E2E04C0220F331F37
-:1015D000441F551F0A94D2F78823A9F48091070568
-:1015E00090910805A0910905B0910A05822B932BD3
-:1015F000A42BB52B8093070590930805A0930905AC
-:10160000B0930A0514C08091D0039091D103A091AA
-:10161000D203B091D303822B932BA42BB52B8093B1
-:10162000D0039093D103A093D203B093D3036695D4
-:101630007727E0FD06C0FB01E25DF84F8081807FE7
-:1016400007C0FB01E25DF84F80811295107F8F701B
-:10165000812B808381E090E002C08FEF9FEF1F918C
-:101660000895982F803218F08FEF9FEF0895869598
-:10167000E82FFF2790FD09C0E25DF84F8081992790
-:1016800087FD90958F7090700895E25DF84F80818E
-:1016900082958F70992787FD90950895782F6032F5
-:1016A00008F04FC0E62FFF2781E090E00E2E02C029
-:1016B000880F991F0A94E2F79C01442737FD409553
-:1016C000542F20953095409550957723A9F480911B
-:1016D000070590910805A0910905B0910A0582239C
-:1016E0009323A423B5238093070590930805A09323
-:1016F0000905B0930A0514C08091D0039091D103DD
-:10170000A091D203B091D30382239323A423B523C2
-:101710008093D0039093D103A093D203B093D303CB
-:1017200066957727E0FD06C0FB01E25DF84F8081FA
-:10173000807F05C0FB01E25DF84F80818F70808360
-:1017400008958FEF9FEF089581E094E09093100744
-:1017500080930F07909312078093110790931407BB
-:1017600080931307909316078093150708959C01A3
-:1017700080910F07909110079F778150944018F047
-:1017800080E090E023C080911107909112079F772D
-:101790008150944018F081E090E018C080911307C8
-:1017A000909114079F778150944018F082E090E068
-:1017B0000DC080911507909116079F778150944036
-:1017C00018F48FEF9FEF089583E090E0FC01EE0F97
-:1017D000FF1FE15FF84F31832083662319F481E016
-:1017E00090E0089530683183208381E090E008958F
-:1017F0009C0180910F07909110079F7782179307A4
-:1018000019F4E0E0F0E020C08091110790911207F8
-:101810009F778217930719F4E1E0F0E015C08091FB
-:101820001307909114079F778217930719F4E2E04A
-:10183000F0E00AC080911507909116079F778217F4
-:10184000930751F4E3E0F0E0EE0FFF1FE15FF84F84
-:1018500081E094E0918380830895AC0120910F078B
-:1018600030911007C9019F7784179507F1F02091F7
-:10187000110730911207C9019F7784179507A9F0C6
-:101880002091130730911407C9019F77841795079A
-:1018900061F02091150730911607C9019F778417D1
-:1018A000950719F080E090E008952150304818F035
-:1018B00081E090E00895CA010E94F80B81E090E079
-:1018C0000895AC01EFE0F7E081E094E02081318100
-:1018D0003F7764E02030360748F4241B350B12169E
-:1018E000130624F4281739070CF4C901329627E0AF
-:1018F000E731F20759F764E08130960711F480E090
-:1019000090E00895EEE3F7E0119287E0EE35F807F6
-:10191000D9F70895582F662319F481E090E00895CF
-:10192000482F20E030E077276150704003C0459F8A
-:10193000402D1124822F99272F5F3F4F861797073D
-:10194000B4F3842F99270895AF92BF92CF92DF927C
-:10195000EF92FF921F93CF93DF935C016EE3C62E4D
-:1019600067E0D62E51E0E52E54E0F52EC0E0D0E041
-:101970008C2F0E94310B682F882301F1F601108112
-:10198000615082E00E948A0C212F332745E0220F0C
-:10199000331F4A95E1F72C0F3D1FA216B30610F036
-:1019A000180FF2CFF6011083C9018A199B098E1511
-:1019B0009F0520F42150344008F47C0121960894BE
-:1019C000C11CD11CC032D10599F641E0E41644E0B7
-:1019D000F40610F0EE24FF24C701DF91CF911F9190
-:1019E000FF90EF90DF90CF90BF90AF90089520913F
-:1019F0001D0730911E07AC01421B530B5093280763
-:101A00004093270790931E0780931D0708958091A8
-:101A10002707909128070895EFE1F7E08FEF819372
-:101A200097E0E732F907D1F78093FA0610921A0788
-:101A300010921E0710921D070895982F9695957580
-:101A40008575980F892F8695869583739373890F73
-:101A5000982F9F7082958F70890F992708951F93F3
-:101A6000CF93DF93CFE1D7E010E089910E941D0D65
-:101A7000180F87E0C732D807C1F7812F9927DF9168
-:101A8000CF911F9108958091FA060E941D0D99270C
-:101A9000089540911A07E42FE695E695E695FF270D
-:101AA000E15EF84F842F992780959095877090700C
-:101AB00021E030E002C0220F331F8A95E2F78081D7
-:101AC000822B80834F5F40931A07413410F01092AD
-:101AD0001A07089540911A07E42FE695E695E695D2
-:101AE000FF27E15EF84F242F33272095309527708C
-:101AF000307081E090E002C0880F991F2A95E2F7CC
-:101B000080952081822380834F5F40931A07413460
-:101B100010F010921A070895883018F080E090E0D5
-:101B20000895E82FFF27EB5FF84F808199270895EC
-:101B300040912C07E42FE695E695E695FF27A42F24
-:101B4000BB27E650F94FCD01809590958770907036
-:101B500021E030E002C0220F331F8A95E2F7808136
-:101B6000822B8083AB5FB84F1C924F5F40932C0752
-:101B7000493010F010922C07089560912C07E62F41
-:101B8000E695E695E695FF27A62FBB27E650F94F89
-:101B9000AD01409550954770507021E030E002C093
-:101BA000220F331F4A95E2F7209590812923208345
-:101BB000AB5FB84F8C936F5F60932C07693010F068
-:101BC00010922C07089599279C01265A3E4B0B979B
-:101BD000880F991F880F991F280F391FF894409874
-:101BE00088E18EBD0DB407FEFDCF832F99278EBDF2
-:101BF0000DB407FEFDCF2EBD0DB407FEFDCF409AFC
-:101C000078940895F89440981EBC0DB407FEFDCF5B
-:101C10008EB5409A789486FFF5CF08958091740729
-:101C200099270895CF93DF93DC01409889EC8EBD0E
-:101C30000DB407FEFDCF80E88EBD0DB407FEFDCFCD
-:101C400092E09150FD01E90FF11D80818EBD0DB430
-:101C500007FEFDCF9923A9F7409A40988BEC8EBDE3
-:101C60000DB407FEFDCF80E88EBD0DB407FEFDCF9D
-:101C700092E09D012E5F3F4FE9019150F901E90F7C
-:101C8000F11D80818EBD0DB407FEFDCF9923A1F714
-:101C9000409A8C9180937507FD018181809376072E
-:101CA000888180937707838180937807DF91CF9134
-:101CB0000895409889E18EBD0DB407FEFDCF83E005
-:101CC0008EBD0DB407FEFDCF86E08EBD0DB407FEC0
-:101CD000FDCF409A40988AE18EBD0DB407FEFDCF3E
-:101CE0008EE08EBD0DB407FEFDCF8EE08EBD0DB42F
-:101CF00007FEFDCF409A81E08093650708954098E4
-:101D000089E18EBD0DB407FEFDCF81E08EBD0DB41F
-:101D100007FEFDCF84EC8EBD0DB407FEFDCF409ACB
-:101D20001092650708958091630790916407089564
-:101D3000282F33272F713070206E306A409885E14C
-:101D40008EBD0DB407FEFDCF832F99278EBD0DB438
-:101D500007FEFDCF2EBD0DB407FEFDCF409A0895BE
-:101D600020916607309167073860309367072093AA
-:101D70006607409881E18EBD0DB407FEFDCF832F2D
-:101D800099278EBD0DB407FEFDCF2EBD0DB407FE05
-:101D9000FDCF409A08952091660730916707377FFD
-:101DA0003093670720936607409881E18EBD0DB49C
-:101DB00007FEFDCF832F99278EBD0DB407FEFDCF03
-:101DC0002EBD0DB407FEFDCF409A089581E08093AB
-:101DD000730720916607309167072061309367078A
-:101DE00020936607409881E18EBD0DB407FEFDCFBC
-:101DF000832F99278EBD0DB407FEFDCF2EBD0DB4E8
-:101E000007FEFDCF409A0895109273072091660750
-:101E1000309167072F7E30936707209366074098BD
-:101E200081E18EBD0DB407FEFDCF832F99278EBDB6
-:101E30000DB407FEFDCF2EBD0DB407FEFDCF409AB9
-:101E4000089581E080937007409883E08EBD0DB4C3
-:101E500007FEFDCF409A409888E08EBD0DB407FE86
-:101E6000FDCF409A10927907089581E08093700722
-:101E7000409883E08EBD0DB407FEFDCF409A409898
-:101E800088E08EBD0DB407FEFDCF409A1092790711
-:101E9000089510927007409886E08EBD0DB407FE3D
-:101EA000FDCF409A10927907089589B1992776E07D
-:101EB000969587957A95E1F78170907008958CB129
-:101EC000992787FD90958827990F881F992708954E
-:101ED00089B19927F6E096958795FA95E1F7817093
-:101EE00090700895CF93DF93CDB7DEB724970FB6E8
-:101EF000F894DEBF0FBECDBF679903C080E090E0CD
-:101F00000FC210927407679B1FC031991DC0409883
-:101F10008FE78EBD0DB407FEFDCF1EBC0DB407FECE
-:101F2000FDCF8EB5409A409888E08EBD0DB407FE77
-:101F3000FDCF409A409888E08EBD0DB407FEFDCFDE
-:101F4000409A8FEF9FEFECC140988FE78EBD0DB4A4
-:101F500007FEFDCF1EBC0DB407FEFDCF4EB5409A67
-:101F60004F77E9F440988FE78EBD0DB407FEFDCFA3
-:101F70001EBC0DB407FEFDCF8EB5409A409888E098
-:101F80008EBD0DB407FEFDCF409A409888E08EBD0F
-:101F90000DB407FEFDCF409A8EEF9FEFC1C14530D3
-:101FA0008CF0E0916807F0916907242F332727FD13
-:101FB00030952B5030408481992787FD909582176A
-:101FC0009307C4F540988FE78EBD0DB407FEFDCF93
-:101FD00060E070E0242F332727FD309506C01EBC3B
-:101FE0000DB407FEFDCF6F5F7F4F862F99278217B5
-:101FF000930714F43199F3CF409A40988FE78EBD40
-:102000000DB407FEFDCF1EBC0DB407FEFDCF8EB58F
-:10201000409A409888E08EBD0DB407FEFDCF409AEF
-:10202000409888E08EBD0DB407FEFDCF409A8DEF3D
-:102030009FEF76C1E0916807F09169074C504383A8
-:1020400040988FE78EBD0DB407FEFDCFFE0131969F
-:102050009E012D5F3F4F1EBC0DB407FEFDCF8EB518
-:102060008193E217F307B9F7409AE0916807F0917E
-:10207000690789819A81A5E096958795AA95E1F7E8
-:102080008170878340988FE78EBD0DB407FEFDCF2A
-:102090001EBC0DB407FEFDCFE0916807F091690703
-:1020A0008EB58083409A40988FE78EBD0DB407FEB1
-:1020B000FDCF80E007C01EBC0DB407FEFDCF8F5FD3
-:1020C000843011F03199F7CF409A40988FE78EBD58
-:1020D0000DB407FEFDCF20E030E01EBC0DB407FEBE
-:1020E000FDCFE0916807F0916907E20FF31F8EB50D
-:1020F00081832F5F3F4F2230310579F7409A8981E4
-:102100009A8183FF56C040988FE78EBD0DB407FEBD
-:10211000FDCFEFE5F7E01EBC0DB407FEFDCF8EB599
-:10212000819387E0E336F807B1F7409A409889E950
-:102130008EBD0DB407FEFDCF80E88EBD0DB407FE49
-:10214000FDCF92E09150E92FFF27E15AF84F8081AF
-:102150008EBD0DB407FEFDCF9923A1F7409A40989C
-:102160008BE98EBD0DB407FEFDCF80E88EBD0DB4AA
-:1021700007FEFDCF92E09150E92FFF27EF59F84F6E
-:1021800080818EBD0DB407FEFDCF9923A1F7409A43
-:1021900040988CE08EBD0DB407FEFDCF409A81E0E3
-:1021A00080937407E0916807F091690783818450F8
-:1021B000838340988FE78EBD0DB407FEFDCF40E0CE
-:1021C00050E011C01EBC0DB407FEFDCFE0916807C2
-:1021D000F09169070580F681E02DE60FF11D8EB5BF
-:1021E00080834F5F5F4F642FE0916807F09169072C
-:1021F000242F33278381992787FD90952817390746
-:102200000CF3409A40988FE78EBD0DB407FC0AC0CE
-:10221000FCCF0DB407FEFDCF5EB5409A40988FE726
-:102220008EBD02C01EBCF5CF0DB407FEFDCFFE0172
-:1022300033969E012B5F3F4F1EBC0DB407FEFDCFB2
-:102240008EB58193E217F307B9F7409AE0916807DA
-:10225000F09169078B81808740E020E030E00AC080
-:10226000E0916807F091690785819681A80FB91FF1
-:102270008C91480F822FE0916807F09169072F5FDA
-:102280003F4FA82FBB278381992787FD9095A817DB
-:10229000B90734F34517E9F040988FE78EBD0DB4C8
-:1022A00007FEFDCF1EBC0DB407FEFDCF8EB5409AD4
-:1022B000409888E08EBD0DB407FEFDCF409A40984F
-:1022C00088E08EBD0DB407FEFDCF409A8CEF9FEFE6
-:1022D00027C08C8187FF08C0809179078F5F80932A
-:1022E000790781E090E01CC040988FE78EBD0DB467
-:1022F00007FEFDCF1EBC0DB407FEFDCF8EB5409A84
-:10230000409888E08EBD0DB407FEFDCF409A4098FE
-:1023100088E08EBD0DB407FEFDCF409A8BEF9FEF96
-:1023200024960FB6F894DEBF0FBECDBFDF91CF91DC
-:10233000089580917907882319F480E090E008954A
-:102340008091790710927907992787FD90950895D4
-:10235000409888E08EBD0DB407FEFDCF409A4098AE
-:1023600088E08EBD0DB407FEFDCF409A08959927F1
-:1023700087FD9095382F22272068409883E18EBDF5
-:102380000DB407FEFDCF832F99278EBD0DB407FE38
-:10239000FDCF2EBD0DB407FEFDCF409A08954098A5
-:1023A00086E08EBD0DB407FEFDCF409A409882E1D5
-:1023B0008EBD0DB407FEFDCF85E08EBD0DB407FECA
-:1023C000FDCF88E08EBD0DB407FEFDCF409A40984A
-:1023D0008EE28EBD0DB407FEFDCF88E18EBD0DB43B
-:1023E00007FEFDCF1EBC0DB407FEFDCF409A0E9434
-:1023F000A8110895409886E08EBD0DB407FEFDCF6C
-:10240000409A409882E18EBD0DB407FEFDCF85E075
-:102410008EBD0DB407FEFDCF1EBC0DB407FEFDCF73
-:10242000409A40988EE28EBD0DB407FEFDCF1EBCD3
-:102430000DB407FEFDCF1EBC0DB407FEFDCF409AC4
-:102440000E94A8110895409884E08EBD0DB407FE47
-:10245000FDCF409A0895409886E08EBD0DB407FEEA
-:10246000FDCF409A0895EF92FF920F931F93CF9361
-:10247000DF93CDB7DEB722970FB6F894DEBF0FBE5D
-:10248000CDBFDC0150916507552339F040988DE0B0
-:102490008EBD0DB407FEFDCF409AFD014281642F31
-:1024A000772767FD709510E020E030E008C0FD015F
-:1024B00083819481E80EF91EF7018081180F822F25
-:1024C0002F5F3F4FE82EFF24E616F70684F3942F84
-:1024D000945F51119C5F6799FECF4E99FCCFF894A1
-:1024E000409889E08EBD0DB407FEFDCF409A40981C
-:1024F00089E08EBD0DB407FEFDCF409A40988EE373
-:102500008EBD0DB407FC05C0FCCF0DB407FC2AC17D
-:10251000FCCF9EBDFACF81E698E89A838983552344
-:1025200029F089819A8188609A83898340988EE313
-:102530008EBD0DB407FEFDCFFE0131969E012D5FCD
-:102540003F4F80818EBD0DB407FEFDCF3196E2175F
-:10255000F307B9F7409A40988EE38EBD0DB407FC9F
-:1025600005C0FCCF0DB407FC08C1FCCF80916A0701
-:102570008EBDF8CF0DB407FEFDCF20E030E0F901AD
-:10258000E459F84F80818EBD0DB407FEFDCF2F5F5B
-:102590003F4F2230310599F7409A40988EE38EBD27
-:1025A0000DB407FEFDCF20E030E0FD01E20FF31F88
-:1025B00080818EBD0DB407FEFDCF2F5F3F4F2230CF
-:1025C000310599F7409A40988EE38EBD0DB407FE11
-:1025D000FDCF20E030E0F901E259F84F80818EBD57
-:1025E0000DB407FEFDCF2F5F3F4F2230310599F725
-:1025F000409A552399F040988EE38EBD0DB407FEA6
-:10260000FDCFE5E7F7E080818EBD0DB407FEFDCF7D
-:10261000319687E0E937F807B1F7409A40988EE3A2
-:102620008EBD0DB407FEFDCF20E030E00DC0FD01F2
-:1026300083819481480F591FFA0180818EBD0DB4AA
-:1026400007FEFDCF2F5F3F4F422F552746175707F5
-:1026500074F3409A40988EE38EBD0DB407FC05C01C
-:10266000FCCF0DB407FC8EC0FCCF1EBDFACF80910D
-:102670007007882339F4409883E08EBD0DB407FEBF
-:10268000FDCF409A40981EBC0DB407FEFDCF8EB51D
-:10269000409A81FFF7CF00E0409885E08EBD0DB4F1
-:1026A00007FEFDCF409A40981EBC0DB407FEFDCF3B
-:1026B0001EB5409A0F5F053651F4789480916307F8
-:1026C000909164070E94B42180E090E062C084E6AB
-:1026D00090E00E94241C13FD08C0DECF409884E0E7
-:1026E0008EBD0DB407FEFDCF409A78944E9BFECF71
-:1026F0004E99FECF80917307882391F084EA92E08F
-:102700000E94241C319B0EC040988FE78EBD0DB4F3
-:1027100007FEFDCF1EBC0DB407FEFDCF8EB5409A5F
-:1027200091E00FC0409888E08EBD0DB407FEFDCF4C
-:10273000409A409888E08EBD0DB407FEFDCF409AC8
-:1027400090E0F894409886E08EBD0DB407FEFDCF72
-:10275000409A789480916A078F5F80936A07892FE7
-:10276000992717C0409A81E498E89A8389838091D9
-:102770007307882309F0CFCED2CE409A40988EE3DB
-:102780008EBDF8CE409AFD018581882309F06FCF78
-:10279000A5CF22960FB6F894DEBF0FBECDBFDF9156
-:1027A000CF911F910F91FF90EF900895BF92CF921C
-:1027B000DF92EF92FF920F931F93CF93DF93CDB7EA
-:1027C000DEB722970FB6F894DEBF0FBECDBF8C01E7
-:1027D0006B017A010E94962C409888E08EBD0DB462
-:1027E00007FEFDCF409A409888E08EBD0DB407FEED
-:1027F000FDCF409A6799FECF4E99FCCFF894409850
-:1028000089E08EBD0DB407FEFDCF409A409889E067
-:102810008EBD0DB407FEFDCF409AF8016281462FB0
-:10282000552747FD5095BB2420E030E007C0F80154
-:1028300083819481A80FB91F8C91B80E822F2F5FCE
-:102840003F4FA82FBB27A417B5078CF3962F945F93
-:1028500040988EE38EBD0DB407FC05C0FCCF0DB4CF
-:1028600007FC10C1FCCF9EBDFACF81E698E89A83A1
-:10287000898340988EE38EBD0DB407FEFDCFFE0127
-:1028800031969E012D5F3F4F80818EBD0DB407FEB6
-:10289000FDCF3196E217F307B9F7409A40988EE3DF
-:1028A0008EBD0DB407FC05C0FCCF0DB407FCF3C012
-:1028B000FCCF80916A078EBDF8CF0DB407FEFDCF27
-:1028C00020E030E0F901E459F84F80818EBD0DB46D
-:1028D00007FEFDCF2F5F3F4F2230310599F7409A19
-:1028E00040988EE38EBD0DB407FEFDCF20E030E0B2
-:1028F000F801E20FF31F80818EBD0DB407FEFDCFFE
-:102900002F5F3F4F2230310599F7409A40988EE370
-:102910008EBD0DB407FEFDCF20E030E0F901E25995
-:10292000F84F80818EBD0DB407FEFDCF2F5F3F4F66
-:102930002230310599F7409AB701C6010E941B2D3C
-:10294000F80185818823C1F180917007882339F4CB
-:10295000409883E08EBD0DB407FEFDCF409A4098AD
-:102960001EBC0DB407FEFDCF8EB5409A81FFF7CF98
-:10297000EE24409885E08EBD0DB407FEFDCF409A51
-:1029800040981EBC0DB407FEFDCFFEB4409AE39400
-:10299000F5E6EF1651F478948091630790916407FF
-:1029A0000E94B42180E090E07DC084E690E00E9427
-:1029B000241CF3FC08C0DDCF409884E08EBD0DB42C
-:1029C00007FEFDCF409A40988EE38EBD0DB407FE02
-:1029D000FDCFF8018281482F552747FD509520E013
-:1029E00030E00CC0F80183819481A80FB91F8C914D
-:1029F0008EBD0DB407FEFDCF2F5F3F4FA22FBB272B
-:102A0000A417B5077CF3409A40988EE38EBD0DB4B1
-:102A100007FC05C0FCCF0DB407FC42C0FCCFBEBC18
-:102A2000FACF4E9BFECFF8944E99FECF409888E0A7
-:102A30008EBD0DB407FEFDCF409A409888E08EBD54
-:102A40000DB407FEFDCF409A409889E08EBD0DB4CD
-:102A500007FEFDCF409A409889E08EBD0DB407FE79
-:102A6000FDCF409A409886E08EBD0DB407FEFDCFA5
-:102A7000409A789480916A078F5F80936A0781E01B
-:102A800090E010C0409AF8018681882309F0EDCECD
-:102A900081E498E8ECCE409A40988EE38EBD0DCF4D
-:102AA000409ABFCF22960FB6F894DEBF0FBECDBFBF
-:102AB000DF91CF911F910F91FF90EF90DF90CF901A
-:102AC000BF900895CF93DF93CDB7DEB722970FB6AF
-:102AD000F894DEBF0FBECDBF9A83898390936F07B2
-:102AE00080936E0784EF91E00E94D02B40988AEE8D
-:102AF0008EBD0DB407FEFDCF80E88EBD0DB407FE80
-:102B0000FDCFFE0131969E012D5F3F4F80818EBD2E
-:102B10000DB407FEFDCF3196E217F307B9F7409ADF
-:102B200084EF91E00E94D02B22960FB6F894DEBF7E
-:102B30000FBECDBFDF91CF9108956F927F928F929C
-:102B40009F92AF92BF92CF92DF92EF92FF920F933C
-:102B50001F93CF93DF93CDB7DEB722970FB6F894CC
-:102B6000DEBF0FBECDBF8C0184E690E00E94D02B6B
-:102B70007801C12CB1E0DB2E3E010894611C711C70
-:102B8000A3E08A2E912C8C0E9D1EF701808121815D
-:102B900033279927982F8827282B392B3A83298385
-:102BA00084E690E00E94D02B40988C2D80688EBDEA
-:102BB0000DB407FEFDCFC60195958795807C8EBD2F
-:102BC0000DB407FEFDCF83015301F50180818EBD59
-:102BD0000DB407FEFDCF0894A11CB11CA814B904C4
-:102BE000A1F7409A0894E11CF11C82E090E0C80E25
-:102BF000D91E90E1C91691E0D90639F684E690E035
-:102C00000E94D02B20E131E040E451E01A82198289
-:102C10004098842F80688EBD0DB407FEFDCFCA0199
-:102C200095958795807C8EBD0DB407FEFDCFF8018C
-:102C300080818EBD0DB407FEFDCF3196EA15FB05F0
-:102C4000B9F7409A4098822F80688EBD0DB407FE78
-:102C5000FDCFC90195958795807C8EBD0DB407FE8B
-:102C6000FDCFF80180818EBD0DB407FEFDCF3196FA
-:102C7000EA15FB05B9F7409A2E5F3F4F4E5F5F4F55
-:102C8000E1E02E313E0711F681E090E09A838983DE
-:102C900040988EEC8EBD0DB407FEFDCF80E88EBD52
-:102CA0000DB407FEFDCFF80180818EBD0DB407FE87
-:102CB000FDCF3196EA15FB05B9F7409A40988EE9A9
-:102CC0008EBD0DB407FEFDCF80E88EBD0DB407FEAE
-:102CD000FDCFF80180818EBD0DB407FEFDCF0F5FE3
-:102CE0001F4F0A151B05A9F7409A22960FB6F894B4
-:102CF000DEBF0FBECDBFDF91CF911F910F91FF902F
-:102D0000EF90DF90CF90BF90AF909F908F907F908B
-:102D10006F900895CF93DF93EC01409888E08EBDCB
-:102D20000DB407FEFDCF409A409888E08EBD0DB4EB
-:102D300007FEFDCF409A862F0E94E30DD0936907CE
-:102D4000C0936807DF91CF9108950E94E30D089525
-:102D5000DF92EF92FF920F931F93CF93DF93CDB744
-:102D6000DEB722970FB6F894DEBF0FBECDBF8C0141
-:102D7000D62E5A8349837901159A88EE93E00E94F2
-:102D8000241C169881E090E00E94241C169A84E688
-:102D900090E00E94241CF894409881E08EBD0DB410
-:102DA00007FEFDCF409A82EE92E0909367078093F2
-:102DB0006607409881E18EBD0DB407FEFDCF82E02D
-:102DC0008EBD0DB407FEFDCF82EE8EBD0DB407FEA5
-:102DD000FDCF409A409882E18EBD0DB407FEFDCF35
-:102DE00085E08EBD0DB407FEFDCF1EBC0DB407FE01
-:102DF000FDCF409A40988CE18EBD0DB407FEFDCF0B
-:102E00001EBC0DB407FEFDCF8FE78EBD0DB407FECF
-:102E1000FDCF409A409889E18EBD0DB407FEFDCFED
-:102E200081E08EBD0DB407FEFDCF84EC8EBD0DB4E8
-:102E300007FEFDCF409A409887E18EBD0DB407FE96
-:102E4000FDCF8AE18EBD0DB407FEFDCF86E58EBDB8
-:102E50000DB407FEFDCF409A84EF91E00E94D02B85
-:102E6000409888EE8EBD0DB407FEFDCF80E88EBD84
-:102E70000DB407FEFDCFFE0131969E012D5F3F4F41
-:102E800080818EBD0DB407FEFDCF3196E217F307AA
-:102E9000B9F7409A84EF91E00E94D02B78948D2D61
-:102EA0000E94E30D78941093690700936807898165
-:102EB0009A8190936D0780936C07F0926F07E09270
-:102EC0006E0710926A07109270070E94020E10920D
-:102ED0007307109265071092740722960FB6F89444
-:102EE000DEBF0FBECDBFDF91CF911F910F91FF903D
-:102EF000EF90DF9008958FEF9FEF0895813051F4A8
-:102F00008091C800992787FD90958827990F881F81
-:102F100099270895882319F080E090E00895809122
-:102F2000C000992787FD90958827990F881F9927BA
-:102F300008958091C80087FFFCCF8091C8008F77EB
-:102F40008093C8008091CE009927089585B780614D
-:102F500085BF86E084B987E085B981E087B988B903
-:102F60008CE38DB98BE08AB98EE38EB988E781B99D
-:102F700080E482B908950E94A61780E58CBD81E0A7
-:102F80008DBD08958F3F09F47FC0482F55279A01C2
-:102F90002770307022303105A9F12330310544F417
-:102FA0002115310589F02130310509F06DC01CC0B3
-:102FB0002430310509F446C0243031059CF1253018
-:102FC000310509F061C04EC022B1B3E05695479576
-:102FD000BA95E1F781E090E002C0880F991F4A9509
-:102FE000E2F7282B22B94DC085B1A3E0569547954D
-:102FF000AA95E1F702C0220F331F4A95E2F7822B10
-:1030000085B93FC028B1F3E056954795FA95E1F7A9
-:1030100081E090E002C0880F991F4A95E2F7282BC3
-:1030200028B92FC02BB1E3E056954795EA95E1F713
-:1030300081E090E002C0880F991F4A95E2F7282BA3
-:103040002BB91FC02EB173E0569547957A95E1F7DD
-:1030500081E090E002C0880F991F4A95E2F7282B83
-:103060002EB90FC021B363E0569547956A95E1F7F5
-:1030700081E090E002C0880F991F4A95E2F7282B63
-:1030800021BB81E090E008958FEF9FEF08958F3F7F
-:1030900009F486C0482F55279A01277030702230D6
-:1030A0003105C1F12330310544F42115310589F092
-:1030B0002130310509F074C01DC02430310509F4F8
-:1030C0004BC024303105BCF12530310509F068C012
-:1030D00054C022B1E3E056954795EA95E1F781E0C7
-:1030E00090E002C0880F991F4A95E2F780958223ED
-:1030F00082B953C095B173E0569547957A95E1F73B
-:1031000002C0220F331F4A95E2F7822F8095892350
-:1031100085B943C028B163E0569547956A95E1F7B4
-:1031200081E090E002C0880F991F4A95E2F78095F0
-:10313000822388B932C02BB133E0569547953A9532
-:10314000E1F781E090E002C0880F991F4A95E2F70D
-:10315000809582238BB921C02EB193E05695479577
-:103160009A95E1F781E090E002C0880F991F4A9597
-:10317000E2F7809582238EB910C021B383E0569583
-:1031800047958A95E1F781E090E002C0880F991F8A
-:103190004A95E2F78095822381BB81E090E0089513
-:1031A0008FEF9FEF08958F3FA9F1282F3327C90193
-:1031B0008770907082309105A9F0833091052CF4CE
-:1031C000009761F0019731F50BC08430910571F0E3
-:1031D000843091054CF00597E9F40AC080B109C02C
-:1031E00083B107C086B105C089B103C08CB101C0ED
-:1031F0008FB19927F3E036952795FA95E1F702C04C
-:10320000959587952A95E2F7992787FD9095817086
-:10321000907008958FEF9FEF08958F3F09F403C1D9
-:10322000282F3327A901477050704230510509F407
-:103230005CC04330510544F44115510591F04130D3
-:10324000510509F0F0C034C04430510509F49BC069
-:10325000443051050CF470C04530510509F0E3C00D
-:10326000B9C080B1A90173E0569547957A95E1F709
-:103270009927042E02C0959587950A94E2F780FD60
-:103280000BC022B181E090E002C0880F991F4A95DF
-:10329000E2F7282B22B9C4C022B181E090E002C03D
-:1032A000880F991F4A95E2F78095822382B9B8C0AA
-:1032B00083B163E0369527956A95E1F79927022E49
-:1032C00002C0959587950A94E2F702C0440F551FF6
-:1032D0002A95E2F780FD03C085B1842B04C095B127
-:1032E000842F8095892385B99BC086B1A90123E0ED
-:1032F000569547952A95E1F79927042E02C0959592
-:1033000087950A94E2F780FD0BC028B181E090E038
-:1033100002C0880F991F4A95E2F7282B28B980C070
-:1033200028B181E090E002C0880F991F4A95E2F72A
-:103330008095822388B974C089B1A90193E056951C
-:1033400047959A95E1F79927042E02C095958795A0
-:103350000A94E2F780FD0BC02BB181E090E002C03F
-:10336000880F991F4A95E2F7282B2BB959C02BB12A
-:1033700081E090E002C0880F991F4A95E2F780959E
-:1033800082238BB94DC08CB1A901B3E05695479506
-:10339000BA95E1F79927042E02C0959587950A946E
-:1033A000E2F780FD0BC02EB181E090E002C0880FF3
-:1033B000991F4A95E2F7282B2EB932C02EB181E031
-:1033C00090E002C0880F991F4A95E2F7809582230A
-:1033D0008EB926C08FB1A901A3E056954795AA954D
-:1033E000E1F79927042E02C0959587950A94E2F794
-:1033F00080FD0BC021B381E090E002C0880F991FCF
-:103400004A95E2F7282B21BB0BC021B381E090E065
-:1034100002C0880F991F4A95E2F78095822381BBED
-:1034200081E090E008958FEF9FEF08958F3F09F4BA
-:1034300012C1482F5527662309F090C0CA01877032
-:1034400090708230910509F43EC0833091053CF4C0
-:10345000009789F08130910509F0FDC021C08430CA
-:10346000910509F454C0843091050CF43EC00597D1
-:1034700009F0F1C05EC031B1B3E056954795BA95F9
-:10348000E1F781E090E002C0880F991F4A95E2F7CA
-:10349000282F2095232321B922B1822B82B9D8C0AD
-:1034A00024B1A3E056954795AA95E1F702C0880F8D
-:1034B000991F4A95E2F7982F8095822384B985B1A8
-:1034C000982B95B9C5C037B1F3E056954795FA9555
-:1034D000E1F781E090E002C0880F991F4A95E2F77A
-:1034E000282F2095232327B935C03AB1E3E056951C
-:1034F0004795EA95E1F781E090E002C0880F991FB7
-:103500004A95E2F7282F209523232AB923C03DB1FD
-:1035100073E0569547957A95E1F781E090E002C017
-:10352000880F991F4A95E2F7282F209523232DB95C
-:1035300011C030B363E0569547956A95E1F781E095
-:1035400090E002C0880F991F4A95E2F7282F209536
-:10355000232320BB25B1822B85B97AC09A0127701D
-:10356000307022303105A9F12330310544F42115A2
-:10357000310589F02130310509F06DC01CC02430BF
-:10358000310509F446C0243031059CF12530310560
-:1035900009F061C04EC021B133E0569547953A9588
-:1035A000E1F781E090E002C0880F991F4A95E2F7A9
-:1035B000282B21B94DC084B193E0569547959A9533
-:1035C000E1F702C0220F331F4A95E2F7822B84B93C
-:1035D0003FC027B1B3E056954795BA95E1F781E032
-:1035E00090E002C0880F991F4A95E2F7282B27B96F
-:1035F0002FC02AB1A3E056954795AA95E1F781E03F
-:1036000090E002C0880F991F4A95E2F7282B2AB94B
-:103610001FC02DB1F3E056954795FA95E1F781E08B
-:1036200090E002C0880F991F4A95E2F7282B2DB928
-:103630000FC020B3E3E056954795EA95E1F781E0A6
-:1036400090E002C0880F991F4A95E2F7282B20BB13
-:1036500081E090E008958FEF9FEF0895882319F09F
-:103660008FEF9FEF089580B1992787FD9095809502
-:1036700090958827990F881F99270895009711F42E
-:1036800084E109C08130910511F48CE104C08230DD
-:10369000910531F484E20E940D1981E090E00895D3
-:1036A000039719F08FEF9FEF08958CE20E940D1998
-:1036B00081E090E00895009711F484E109C0813021
-:1036C000910511F48CE104C08230910531F484E25B
-:1036D0000E94C21781E090E00895039719F08FEFE0
-:1036E0009FEF08958CE20E94C21781E090E0089558
-:1036F000009711F484E109C08130910511F48CE147
-:1037000004C08230910531F484E20E94471881E0C0
-:1037100090E00895039719F08FEF9FEF08958CE2E2
-:103720000E94471881E090E00895882319F085B73A
-:103730008F7E02C085B7806185BF81E090E00895EB
-:10374000982F8091C00085FFFCCF8091C0008F7DB5
-:103750008093C0009093C6000895982F8091C80070
-:1037600085FFFCCF9093CE000895292F3327209317
-:10377000C5008093C40086E08093C200E1ECF0E0D5
-:1037800080818B7F8083A0ECB0E08C9182608C93F1
-:103790008081886180830895292F33272093CD006D
-:1037A0008093CC0086E08093CA00E9ECF0E0808151
-:1037B0008B7F8083A8ECB0E08C9182608C938081B9
-:1037C0008861808308958091C00087FFFCCF80913D
-:1037D000C0008F778093C0008091C600992708951C
-:1037E000EF92FF920F931F930E94CC1B09E917E100
-:1037F0005DEAE52E5BE1F52EB801C7010E94593262
-:103800009093170880931608B801C7010E94593297
-:1038100090931508809314081F910F91FF90EF90DB
-:103820000895CF93DF93EC0107C060911608709163
-:10383000170899270E94A932FE01219684918823B6
-:10384000A1F7DF91CF910895000000000000000073
-:103850000197D1F70895FC01A7E0B0E00E94AD34D4
-:10386000802D808381E090E00895FC018081A7E0B5
-:10387000B0E0082E0E94B53481E090E00895DC01AC
-:103880000E94AD34802D99270895FC01A0E0B0E09E
-:103890000E94AD34402D4383A1E0B0E00E94AD34DE
-:1038A000802D8283A2E0B0E00E94AD34302D3183C0
-:1038B000A3E0B0E00E94AD34902D9083A4E0B0E08E
-:1038C0000E94AD34202D830F840F890F281719F41F
-:1038D00081E090E008958FEF9FEF0895FC01A5E04F
-:1038E000B0E00E94AD34802D808381E090E00895A7
-:1038F000FC01A6E0B0E00E94AD34802D808381E021
-:1039000090E00895AC0120E030E0D90118960E94C3
-:10391000AD34802DFA01E20FF31F80832F5F3F4FFC
-:103920002031310591F781E090E00895DC01062E09
-:103930000E94B5340895FC018081A6E0B0E0082E15
-:103940000E94B53481E090E00895AC0120E030E0C1
-:10395000D9011896FA01E20FF31F8081082E0E9408
-:10396000B5342F5F3F4F2031310591F781E090E072
-:103970000895F89408957894089585E690E0089560
-:103980000E94D8290895EF92FF920F931F93CF932F
-:10399000DF93EC018B017A018985823021F08091DF
-:1039A000E407888301C018828091E407833020F007
-:1039B00060E087E00E949E1F8985823029F0809117
-:1039C000E4078F5F8093E4078091E407882319F46C
-:1039D00081E08093E4078881992787FD9095FC0119
-:1039E00045E0EE0FFF1F4A95E1F7E80FF91FE45895
-:1039F000F84F118300838881992787FD9095FC01FA
-:103A000035E0EE0FFF1F3A95E1F7E80FF91FE45894
-:103A1000F84F888582878881992787FD9095FC01DA
-:103A200025E0EE0FFF1F2A95E1F7E80FF91FE45894
-:103A3000F84F83E081872881822F992787FD909511
-:103A4000FC0105E0EE0FFF1F0A95E1F7E80FF91FF3
-:103A5000E458F84F20878881992787FD9095FC01CD
-:103A600015E0EE0FFF1F1A95E1F7E80FF91FE45874
-:103A7000F84F15820881112707FD10952B853C858D
-:103A80004D855E856F85788989899A890E94F3279B
-:103A9000F801B5E0EE0FFF1FBA95E1F7E00FF11F57
-:103AA000E458F84F948F838F0881112707FD1095F4
-:103AB0002B8D3C8D4D8D5E8D6F8D78A189A19AA146
-:103AC0000E94F327F801A5E0EE0FFF1FAA95E1F78A
-:103AD000E00FF11FE458F84F968B858B888199276A
-:103AE00087FD9095FC0175E0EE0FFF1F7A95E1F7D9
-:103AF000E80FF91FE458F84F85899689238D348D96
-:103B0000820F931F908F878B0881112707FD1095D7
-:103B10002B893C894D895E896F89788D898D9A8D35
-:103B20000E94F327F80165E0EE0FFF1F6A95E1F7A9
-:103B3000E00FF11FE458F84F968F858F8881992701
-:103B400087FD9095FC0155E0EE0FFF1F5A95E1F7B8
-:103B5000E80FF91FE458F84F858D968D928F818F6D
-:103B60008881992787FD9095FC0145E0EE0FFF1FA6
-:103B70004A95E1F7E80FF91FE458F84F81E090E02B
-:103B800090A3878F8881992787FD9095FC0135E068
-:103B9000EE0FFF1F3A95E1F7E80FF91FE458F84FD1
-:103BA000F382E2828881992787FD9095FC0125E0C8
-:103BB000EE0FFF1F2A95E1F7E80FF91FE458F84FC1
-:103BC00081E0848781E090E0DF91CF911F910F9198
-:103BD000FF90EF9008958F929F92AF92BF92CF92F5
-:103BE000DF92EF92FF920F931F93CF93DF9364E8DE
-:103BF000A62E67E0B62ECC24DD244501EC2CF50181
-:103C0000F080FFEFFF1691F0E40100E010E0E01615
-:103C100039F08881F81621F46F2D85E00E949E1FEF
-:103C20000F5F1F4FA1960330110589F70894C11C3F
-:103C3000D11C81E290E0A80EB91E93E0C916D10410
-:103C4000E9F60E949523282F332727FD3095F901A7
-:103C500055E0EE0FFF1F5A95E1F7E20FF31FE4580E
-:103C6000F84F32853093F70721E28202C001112418
-:103C70008458984F9093F6078093F5079093E70741
-:103C80008093E6073093E8070E94EC2F0E94D22F22
-:103C90000E941030FFCF0F931F93CF93DF93CDB7C8
-:103CA000DEB7A3970FB6F894DEBF0FBECDBF0E945C
-:103CB000A5208093E5078F3F21F460E08EE00E940D
-:103CC0009E1F0E94432F882321F460E086E00E941B
-:103CD0009E1F1092E8071092F6071092F5071092B7
-:103CE000E7071092E6071092F7071092F4079FEF8C
-:103CF0009093E1079093E3079093E20783E6809324
-:103D00008607909384078093A7079093A5078093D5
-:103D1000C8079093C607E8EFF7E0CF0105969483B4
-:103D20008383F783E683FC0128E087309207A9F7B5
-:103D30001092FA071092F90710920B0810920A08D5
-:103D40001092EB071092EA070F9790937B078093EE
-:103D50007A0764EB79E28E010F5F1F4FC8010E9462
-:103D6000902F40E850E06DE076E0C8010E94F12F0E
-:103D700085E580930D0619861C8E1D8E1E8E1F8E66
-:103D800018A219A21AA21BA291E0988782E08A8742
-:103D90009B87C8010E947E26A3960FB6F894DEBFCB
-:103DA0000FBECDBFDF91CF911F910F910895F89471
-:103DB000FFCFE091F507F091F60784870895E09131
-:103DC000F507F091F607848599270895DC01FB013A
-:103DD00080919505882319F480E090E00895808310
-:103DE0008091A8038C9381E090E008951F938091C7
-:103DF0009505882309F49EC00E94B91C0E94B91C35
-:103E000082E093E00E94111C8091A80399279F9360
-:103E10008F9384EB92E09F938F930E94D6328EEF24
-:103E200092E00E94111C0F900F900F900F908091C4
-:103E30009505843110F0109295058091950599278C
-:103E4000AA27BB27FC013197E231F105F0F5EA59C9
-:103E5000FF4FEE0FFF1F0590F491E02D099487EDC1
-:103E600092E035C083EC92E032C08DEA92E02FC040
-:103E700082E992E02CC08CE792E029C084E692E0CF
-:103E800026C081E592E023C08EE392E020C080E26C
-:103E900092E01DC08BEF91E01AC08FEE91E017C049
-:103EA00084ED91E014C085EC91E011C084EB91E0C9
-:103EB0000EC080EA91E00BC080E891E008C088E67F
-:103EC00091E005C08DE491E002C086E491E00E949B
-:103ED000111C60911608709117088DE090E00E9407
-:103EE000A93260911608709117088AE090E00E944C
-:103EF000A93282E090E00E94781B83E090E00E946B
-:103F00005B1B10E088EE93E00E94D02B1F5F1436FD
-:103F1000C9F783E090E00E94781B82E090E00E9465
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/monome/controller_base_comm/base_station/main.lss Sat Dec 11
12:36:09 2010
+++ /trunk/monome/controller_base_comm/base_station/main.lss Tue Dec 21
13:38:34 2010
@@ -3,10868 +3,11787 @@
Sections:
Idx Name Size VMA LMA File off Algn
- 0 .data 00000110 00800200 000069ba 00006a4e 2**0
+ 0 .data 0000011e 00800200 000067ea 0000687e 2**0
CONTENTS, ALLOC, LOAD, DATA
- 1 .text 000069ba 00000000 00000000 00000094 2**1
+ 1 .text 000067ea 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
- 2 .bss 0000050e 00800310 00800310 00006b5e 2**0
+ 2 .bss 0000050e 0080031e 0080031e 0000699c 2**0
ALLOC
- 3 .stab 0000dee4 00000000 00000000 00006b60 2**2
+ 3 .stab 00010908 00000000 00000000 0000699c 2**2
CONTENTS, READONLY, DEBUGGING
- 4 .stabstr 00005f8f 00000000 00000000 00014a44 2**0
+ 4 .stabstr 00006c8e 00000000 00000000 000172a4 2**0
CONTENTS, READONLY, DEBUGGING
+
Disassembly of section .text:
00000000 <__vectors>:
- 0: 0c 94 8f 01 jmp 0x31e ; 0x31e <__init>
- 4: 0c 94 e7 2e jmp 0x5dce ; 0x5dce <__vector_1>
- 8: 0c 94 b9 2e jmp 0x5d72 ; 0x5d72 <__vector_2>
- c: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 10: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 14: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 18: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 1c: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 20: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 24: 0c 94 15 2f jmp 0x5e2a ; 0x5e2a <__vector_9>
- 28: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 2c: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 30: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 34: 0c 94 9a 2c jmp 0x5934 ; 0x5934 <__vector_13>
- 38: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 3c: 0c 94 9a 2c jmp 0x5934 ; 0x5934 <__vector_13>
- 40: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 44: 0c 94 cd 2c jmp 0x599a ; 0x599a <__vector_17>
- 48: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 4c: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 50: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 54: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 58: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 5c: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 60: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 64: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 68: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 6c: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 70: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 74: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 78: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 7c: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 80: 0c 94 d7 2c jmp 0x59ae ; 0x59ae <__vector_32>
- 84: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 88: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 8c: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 90: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 94: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 98: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- 9c: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- a0: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- a4: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- a8: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- ac: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- b0: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- b4: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- b8: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- bc: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- c0: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- c4: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
- c8: 0c 94 ae 01 jmp 0x35c ; 0x35c <__bad_interrupt>
-
-000000cc <__ctors_end>:
- cc: 32 1f adc r19, r18
- ce: 38 1f adc r19, r24
- d0: 3b 1f adc r19, r27
- d2: 3e 1f adc r19, r30
- d4: 41 1f adc r20, r17
- d6: 44 1f adc r20, r20
- d8: 4a 1f adc r20, r26
- da: 47 1f adc r20, r23
- dc: 4d 1f adc r20, r29
- de: 50 1f adc r21, r16
- e0: 53 1f adc r21, r19
- e2: 59 1f adc r21, r25
- e4: 5c 1f adc r21, r28
- e6: 5f 1f adc r21, r31
- e8: 62 1f adc r22, r18
- ea: 56 1f adc r21, r22
- ec: 2f 1f adc r18, r31
- ee: 35 1f adc r19, r21
-
-000000f0 <__c.2963>:
+ 0: 0c 94 9a 01 jmp 0x334 ; 0x334 <__ctors_end>
+ 4: 0c 94 1f 2e jmp 0x5c3e ; 0x5c3e <__vector_1>
+ 8: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ c: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 10: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 14: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 18: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 1c: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 20: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 24: 0c 94 51 2e jmp 0x5ca2 ; 0x5ca2 <__vector_9>
+ 28: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 2c: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 30: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 34: 0c 94 83 2c jmp 0x5906 ; 0x5906 <__vector_13>
+ 38: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 3c: 0c 94 83 2c jmp 0x5906 ; 0x5906 <__vector_13>
+ 40: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 44: 0c 94 b6 2c jmp 0x596c ; 0x596c <__vector_17>
+ 48: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 4c: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 50: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 54: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 58: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 5c: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 60: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 64: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 68: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 6c: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 70: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 74: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 78: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 7c: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 80: 0c 94 c0 2c jmp 0x5980 ; 0x5980 <__vector_32>
+ 84: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 88: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 8c: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 90: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 94: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 98: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ 9c: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ a0: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ a4: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ a8: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ ac: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ b0: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ b4: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ b8: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ bc: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ c0: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ c4: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ c8: 0c 94 b9 01 jmp 0x372 ; 0x372 <__bad_interrupt>
+ cc: d0 1e adc r13, r16
+ ce: d6 1e adc r13, r22
+ d0: d9 1e adc r13, r25
+ d2: dc 1e adc r13, r28
+ d4: df 1e adc r13, r31
+ d6: e2 1e adc r14, r18
+ d8: e8 1e adc r14, r24
+ da: e5 1e adc r14, r21
+ dc: eb 1e adc r14, r27
+ de: ee 1e adc r14, r30
+ e0: f1 1e adc r15, r17
+ e2: f7 1e adc r15, r23
+ e4: fa 1e adc r15, r26
+ e6: fd 1e adc r15, r29
+ e8: 00 1f adc r16, r16
+ ea: f4 1e adc r15, r20
+ ec: cd 1e adc r12, r29
+ ee: d3 1e adc r13, r19
+
+000000f0 <__c.2651>:
f0: 52 54 2d 4c 69 6e 6b 20 45 52 52 4f 52 3a 20 63 RT-Link
ERROR: c
100: 72 65 61 74 69 6e 67 20 74 78 20 73 69 67 6e 61 reating tx
signa
110: 6c 20 66 61 69 6c 65 64 0d 0a 00 l failed...
-0000011b <__c.2961>:
+0000011b <__c.2649>:
11b: 52 54 2d 4c 69 6e 6b 20 45 52 52 4f 52 3a 20 63 RT-Link
ERROR: c
12b: 72 65 61 74 69 6e 67 20 72 78 20 73 69 67 6e 61 reating rx
signa
13b: 6c 20 66 61 69 6c 65 64 0d 0a 00 l failed...
-00000146 <__c.2376>:
+00000146 <__c.2088>:
146: 55 4e 4b 4f 57 4e 00 UNKOWN.
-0000014d <__c.2373>:
+0000014d <__c.2085>:
14d: 46 61 69 6c 65 64 20 74 6f 20 63 72 65 61 74 65 Failed to
create
15d: 20 53 65 6d 61 70 68 6f 72 65 00 Semaphore.
-00000168 <__c.2370>:
+00000168 <__c.2082>:
168: 46 61 69 6c 65 64 20 74 6f 20 63 72 65 61 74 65 Failed to
create
178: 20 53 69 67 6e 61 6c 00 Signal.
-00000180 <__c.2367>:
+00000180 <__c.2079>:
180: 4b 65 72 6e 65 6c 20 66 75 6e 63 74 69 6f 6e 20 Kernel
function
190: 6e 6f 74 20 69 6d 70 6c 65 6d 65 6e 74 65 64 00 not
implemented.
-000001a0 <__c.2364>:
+000001a0 <__c.2076>:
1a0: 44 65 76 69 63 65 20 44 72 69 76 65 72 20 45 72 Device
Driver Er
1b0: 72 6f 72 00 ror.
-000001b4 <__c.2361>:
+000001b4 <__c.2073>:
1b4: 57 61 74 63 68 64 6f 67 20 52 65 73 74 61 72 74 Watchdog
Restart
...
-000001c5 <__c.2358>:
+000001c5 <__c.2070>:
1c5: 54 69 6d 65 72 20 4f 76 65 72 66 6c 6f 77 00 Timer
Overflow.
-000001d4 <__c.2355>:
+000001d4 <__c.2067>:
1d4: 55 6e 68 61 6e 64 6c 65 64 20 49 6e 74 65 72 72 Unhandled
Interr
1e4: 75 70 74 20 56 65 63 74 6f 72 00 upt Vector.
-000001ef <__c.2352>:
+000001ef <__c.2064>:
1ef: 4c 6f 77 20 56 6f 6c 74 61 67 65 00 Low Voltage.
-000001fb <__c.2349>:
+000001fb <__c.2061>:
1fb: 45 78 74 72 61 20 54 61 73 6b 20 73 74 61 72 74 Extra Task
start
20b: 65 64 2c 20 69 73 20 6e 72 6b 5f 63 66 67 2e 68 ed, is
nrk_cfg.h
21b: 20 6f 6b 3f 00 ok?.
-00000220 <__c.2346>:
+00000220 <__c.2058>:
220: 49 64 6c 65 20 6f 72 20 4b 65 72 6e 65 6c 20 53 Idle or
Kernel S
230: 74 61 63 6b 20 4f 76 65 72 66 6c 6f 77 00 tack
Overflow.
-0000023e <__c.2343>:
+0000023e <__c.2055>:
23e: 55 6e 65 78 70 65 63 74 65 64 20 52 65 73 74 61 Unexpected
Resta
24e: 72 74 00 rt.
-00000251 <__c.2340>:
+00000251 <__c.2052>:
251: 44 75 70 6c 69 63 61 74 65 64 20 54 61 73 6b 20 Duplicated
Task
261: 49 44 00 ID.
-00000264 <__c.2337>:
+00000264 <__c.2049>:
264: 53 63 68 65 64 75 6c 65 72 20 4d 69 73 73 65 64 Scheduler
Missed
274: 20 57 61 6b 65 75 70 00 Wakeup.
-0000027c <__c.2334>:
+0000027c <__c.2046>:
27c: 54 61 73 6b 20 52 65 73 65 72 76 65 20 56 69 6f Task Reserve
Vio
28c: 6c 61 74 65 64 00 lated.
-00000292 <__c.2331>:
+00000292 <__c.2043>:
292: 52 65 73 65 72 76 65 20 45 72 72 6f 72 20 69 6e Reserve
Error in
2a2: 20 53 63 68 65 64 75 6c 65 72 00 Scheduler.
-000002ad <__c.2328>:
+000002ad <__c.2040>:
2ad: 49 6e 76 61 6c 69 64 20 53 74 61 63 6b 20 50 6f Invalid
Stack Po
2bd: 69 6e 74 65 72 00 inter.
-000002c3 <__c.2325>:
+000002c3 <__c.2037>:
2c3: 54 61 73 6b 20 53 74 61 63 6b 20 4f 76 65 72 66 Task Stack
Overf
2d3: 6c 6f 77 00 low.
-000002d7 <__c.2321>:
+000002d7 <__c.2033>:
2d7: 53 74 61 63 6b 20 77 61 73 20 6e 6f 74 20 64 65 Stack was
not de
2e7: 66 69 6e 65 64 20 61 73 20 6c 61 72 67 65 20 65 fined as
large e
2f7: 6e 6f 75 67 68 21 00 nough!.
-000002fe <__c.2318>:
+000002fe <__c.2030>:
2fe: 29 3a 20 00 ): .
-00000302 <__c.2316>:
+00000302 <__c.2028>:
302: 2a 4e 52 4b 20 45 52 52 4f 52 28 00 *NRK ERROR(.
-0000030e <__c.2249>:
- 30e: 0d 0a 53 54 41 43 4b 20 44 55 4d 50 0d 0a 00 00 ..STACK
DUMP....
-
-0000031e <__init>:
- 31e: 11 24 eor r1, r1
- 320: 1f be out 0x3f, r1 ; 63
- 322: cf ef ldi r28, 0xFF ; 255
- 324: d1 e2 ldi r29, 0x21 ; 33
- 326: de bf out 0x3e, r29 ; 62
- 328: cd bf out 0x3d, r28 ; 61
-
-0000032a <__do_copy_data>:
- 32a: 13 e0 ldi r17, 0x03 ; 3
- 32c: a0 e0 ldi r26, 0x00 ; 0
- 32e: b2 e0 ldi r27, 0x02 ; 2
- 330: ea eb ldi r30, 0xBA ; 186
- 332: f9 e6 ldi r31, 0x69 ; 105
- 334: 00 e0 ldi r16, 0x00 ; 0
- 336: 0b bf out 0x3b, r16 ; 59
- 338: 02 c0 rjmp .+4 ; 0x33e <__do_copy_data+0x14>
- 33a: 07 90 elpm r0, Z+
- 33c: 0d 92 st X+, r0
- 33e: a0 31 cpi r26, 0x10 ; 16
- 340: b1 07 cpc r27, r17
- 342: d9 f7 brne .-10 ; 0x33a <__do_copy_data+0x10>
-
-00000344 <__do_clear_bss>:
- 344: 18 e0 ldi r17, 0x08 ; 8
- 346: a0 e1 ldi r26, 0x10 ; 16
- 348: b3 e0 ldi r27, 0x03 ; 3
- 34a: 01 c0 rjmp .+2 ; 0x34e <.do_clear_bss_start>
-
-0000034c <.do_clear_bss_loop>:
- 34c: 1d 92 st X+, r1
-
-0000034e <.do_clear_bss_start>:
- 34e: ae 31 cpi r26, 0x1E ; 30
- 350: b1 07 cpc r27, r17
- 352: e1 f7 brne .-8 ; 0x34c <.do_clear_bss_loop>
- 354: 0e 94 57 03 call 0x6ae ; 0x6ae <main>
- 358: 0c 94 dc 34 jmp 0x69b8 ; 0x69b8 <_exit>
-
-0000035c <__bad_interrupt>:
- 35c: 0c 94 05 2d jmp 0x5a0a ; 0x5a0a <__vector_default>
-
-00000360 <monome_setup_system>:
+0000030e <__c.1962>:
+ 30e: 0d 0a 53 54 41 43 4b 20 44 55 4d 50 0d 0a 00 ..STACK
DUMP...
+
+0000031d <__c.1755>:
+ 31d: 45 46 47 65 66 67 00 EFGefg.
+
+00000324 <__c.1749>:
+ 324: 20 2b 2d 2e 30 31 32 33 34 35 36 37 38 39 68 00
+-.0123456789h.
+
+00000334 <__ctors_end>:
+ 334: 11 24 eor r1, r1
+ 336: 1f be out 0x3f, r1 ; 63
+ 338: cf ef ldi r28, 0xFF ; 255
+ 33a: d1 e2 ldi r29, 0x21 ; 33
+ 33c: de bf out 0x3e, r29 ; 62
+ 33e: cd bf out 0x3d, r28 ; 61
+
+00000340 <__do_copy_data>:
+ 340: 13 e0 ldi r17, 0x03 ; 3
+ 342: a0 e0 ldi r26, 0x00 ; 0
+ 344: b2 e0 ldi r27, 0x02 ; 2
+ 346: ea ee ldi r30, 0xEA ; 234
+ 348: f7 e6 ldi r31, 0x67 ; 103
+ 34a: 00 e0 ldi r16, 0x00 ; 0
+ 34c: 0b bf out 0x3b, r16 ; 59
+ 34e: 02 c0 rjmp .+4 ; 0x354 <__do_copy_data+0x14>
+ 350: 07 90 elpm r0, Z+
+ 352: 0d 92 st X+, r0
+ 354: ae 31 cpi r26, 0x1E ; 30
+ 356: b1 07 cpc r27, r17
+ 358: d9 f7 brne .-10 ; 0x350 <__do_copy_data+0x10>
+
+0000035a <__do_clear_bss>:
+ 35a: 18 e0 ldi r17, 0x08 ; 8
+ 35c: ae e1 ldi r26, 0x1E ; 30
+ 35e: b3 e0 ldi r27, 0x03 ; 3
+ 360: 01 c0 rjmp .+2 ; 0x364 <.do_clear_bss_start>
+
+00000362 <.do_clear_bss_loop>:
+ 362: 1d 92 st X+, r1
+
+00000364 <.do_clear_bss_start>:
+ 364: ac 32 cpi r26, 0x2C ; 44
+ 366: b1 07 cpc r27, r17
+ 368: e1 f7 brne .-8 ; 0x362 <.do_clear_bss_loop>
+ 36a: 0e 94 86 03 call 0x70c ; 0x70c <main>
+ 36e: 0c 94 f3 33 jmp 0x67e6 ; 0x67e6 <_exit>
+
+00000372 <__bad_interrupt>:
+ 372: 0c 94 f2 2c jmp 0x59e4 ; 0x59e4 <__vector_default>
+
+00000376 <monome_setup_system>:
+ rtl_rx_pkt_set_buffer(rx_buf, RF_MAX_PAYLOAD_SIZE);
}
inline void monome_setup_system(){
int i;
state = SYNC;
- 360: 81 e0 ldi r24, 0x01 ; 1
- 362: 80 93 f7 03 sts 0x03F7, r24
+ 376: 81 e0 ldi r24, 0x01 ; 1
+ 378: 80 93 05 04 sts 0x0405, r24
num_players = 0;
- 366: 10 92 0f 04 sts 0x040F, r1
- 36a: 20 e0 ldi r18, 0x00 ; 0
- 36c: 30 e0 ldi r19, 0x00 ; 0
+ 37c: 10 92 1d 04 sts 0x041D, r1
+ 380: 80 e0 ldi r24, 0x00 ; 0
+ 382: 90 e0 ldi r25, 0x00 ; 0
for(i = 0; i < MAX_NUM_PLAYERS; i++){
player_rx[i] = -1;
- 36e: f9 01 movw r30, r18
- 370: e3 5f subi r30, 0xF3 ; 243
- 372: fa 4f sbci r31, 0xFA ; 250
- 374: 8f ef ldi r24, 0xFF ; 255
- 376: 80 83 st Z, r24
+ 384: 2f ef ldi r18, 0xFF ; 255
+ 386: fc 01 movw r30, r24
+ 388: e5 5e subi r30, 0xE5 ; 229
+ 38a: fa 4f sbci r31, 0xFA ; 250
+ 38c: 20 83 st Z, r18
player_tx[i] = -1;
- 378: f9 01 movw r30, r18
- 37a: e3 57 subi r30, 0x73 ; 115
- 37c: f9 4f sbci r31, 0xF9 ; 249
- 37e: 80 83 st Z, r24
- 380: 2f 5f subi r18, 0xFF ; 255
- 382: 3f 4f sbci r19, 0xFF ; 255
- 384: 24 30 cpi r18, 0x04 ; 4
- 386: 31 05 cpc r19, r1
- 388: 91 f7 brne .-28 ; 0x36e <monome_setup_system+0xe>
- 38a: 08 95 ret
-
-0000038c <monome_add_controller>:
+ 38e: fc 01 movw r30, r24
+ 390: e5 56 subi r30, 0x65 ; 101
+ 392: f9 4f sbci r31, 0xF9 ; 249
+ 394: 20 83 st Z, r18
+
+inline void monome_setup_system(){
+ int i;
+ state = SYNC;
+ num_players = 0;
+ for(i = 0; i < MAX_NUM_PLAYERS; i++){
+ 396: 01 96 adiw r24, 0x01 ; 1
+ 398: 84 30 cpi r24, 0x04 ; 4
+ 39a: 91 05 cpc r25, r1
+ 39c: a1 f7 brne .-24 ; 0x386 <monome_setup_system+0x10>
+ player_rx[i] = -1;
+ player_tx[i] = -1;
}
}
+ 39e: 08 95 ret
+
+000003a0 <monome_add_controller>:
inline void monome_add_controller(uint8_t slot){
- 38c: 98 2f mov r25, r24
+ 3a0: 98 2f mov r25, r24
int i, already_player;
already_player = 0;
for(i = 0; i<num_players; i++){
- 38e: 80 91 0f 04 lds r24, 0x040F
- 392: a8 2f mov r26, r24
- 394: bb 27 eor r27, r27
- 396: ed e8 ldi r30, 0x8D ; 141
- 398: f6 e0 ldi r31, 0x06 ; 6
- 39a: 40 e0 ldi r20, 0x00 ; 0
- 39c: 50 e0 ldi r21, 0x00 ; 0
- 39e: 9d 01 movw r18, r26
- 3a0: 2e 0f add r18, r30
- 3a2: 3f 1f adc r19, r31
- 3a4: 06 c0 rjmp .+12 ; 0x3b2 <monome_add_controller+0x26>
+ 3a2: 80 91 1d 04 lds r24, 0x041D
+ 3a6: a8 2f mov r26, r24
+ 3a8: b0 e0 ldi r27, 0x00 ; 0
+ 3aa: eb e9 ldi r30, 0x9B ; 155
+ 3ac: f6 e0 ldi r31, 0x06 ; 6
+ 3ae: 20 e0 ldi r18, 0x00 ; 0
+ 3b0: 30 e0 ldi r19, 0x00 ; 0
+ 3b2: ad 01 movw r20, r26
+ 3b4: 4e 0f add r20, r30
+ 3b6: 5f 1f adc r21, r31
+ 3b8: 06 c0 rjmp .+12 ; 0x3c6 <monome_add_controller+0x26>
if(slot == player_tx[i]){
- 3a6: 80 81 ld r24, Z
- 3a8: 98 17 cp r25, r24
- 3aa: 11 f4 brne .+4 ; 0x3b0 <monome_add_controller+0x24>
- 3ac: 41 e0 ldi r20, 0x01 ; 1
- 3ae: 50 e0 ldi r21, 0x00 ; 0
- 3b0: 31 96 adiw r30, 0x01 ; 1
- 3b2: e2 17 cp r30, r18
- 3b4: f3 07 cpc r31, r19
- 3b6: b9 f7 brne .-18 ; 0x3a6 <monome_add_controller+0x1a>
+ 3ba: 80 81 ld r24, Z
+ 3bc: 98 17 cp r25, r24
+ 3be: 11 f4 brne .+4 ; 0x3c4 <monome_add_controller+0x24>
+ 3c0: 21 e0 ldi r18, 0x01 ; 1
+ 3c2: 30 e0 ldi r19, 0x00 ; 0
+ 3c4: 31 96 adiw r30, 0x01 ; 1
+}
+
+inline void monome_add_controller(uint8_t slot){
+ int i, already_player;
+ already_player = 0;
+ for(i = 0; i<num_players; i++){
+ 3c6: e4 17 cp r30, r20
+ 3c8: f5 07 cpc r31, r21
+ 3ca: b9 f7 brne .-18 ; 0x3ba <monome_add_controller+0x1a>
+ if(slot == player_tx[i]){
already_player = 1;
}
}
if(already_player == 0){
- 3b8: 45 2b or r20, r21
- 3ba: 09 f0 breq .+2 ; 0x3be <monome_add_controller+0x32>
- 3bc: 73 c0 rjmp .+230 ; 0x4a4 <monome_add_controller+0x118>
+ 3cc: 23 2b or r18, r19
+ 3ce: 09 f0 breq .+2 ; 0x3d2 <monome_add_controller+0x32>
+ 3d0: 83 c0 rjmp .+262 ; 0x4d8 <monome_add_controller+0x138>
/* consider code to add player back if player is lost */
switch(slot){
- 3be: 94 30 cpi r25, 0x04 ; 4
- 3c0: 91 f0 breq .+36 ; 0x3e6 <monome_add_controller+0x5a>
- 3c2: 95 30 cpi r25, 0x05 ; 5
- 3c4: 18 f4 brcc .+6 ; 0x3cc <monome_add_controller+0x40>
- 3c6: 92 30 cpi r25, 0x02 ; 2
- 3c8: 31 f5 brne .+76 ; 0x416 <monome_add_controller+0x8a>
- 3ca: 05 c0 rjmp .+10 ; 0x3d6 <monome_add_controller+0x4a>
- 3cc: 96 30 cpi r25, 0x06 ; 6
- 3ce: 99 f0 breq .+38 ; 0x3f6 <monome_add_controller+0x6a>
- 3d0: 98 30 cpi r25, 0x08 ; 8
- 3d2: 09 f5 brne .+66 ; 0x416 <monome_add_controller+0x8a>
- 3d4: 18 c0 rjmp .+48 ; 0x406 <monome_add_controller+0x7a>
+ 3d2: 94 30 cpi r25, 0x04 ; 4
+ 3d4: 91 f0 breq .+36 ; 0x3fa <monome_add_controller+0x5a>
+ 3d6: 95 30 cpi r25, 0x05 ; 5
+ 3d8: 18 f4 brcc .+6 ; 0x3e0 <monome_add_controller+0x40>
+ 3da: 92 30 cpi r25, 0x02 ; 2
+ 3dc: 31 f5 brne .+76 ; 0x42a <monome_add_controller+0x8a>
+ 3de: 05 c0 rjmp .+10 ; 0x3ea <monome_add_controller+0x4a>
+ 3e0: 96 30 cpi r25, 0x06 ; 6
+ 3e2: 99 f0 breq .+38 ; 0x40a <monome_add_controller+0x6a>
+ 3e4: 98 30 cpi r25, 0x08 ; 8
+ 3e6: 09 f5 brne .+66 ; 0x42a <monome_add_controller+0x8a>
+ 3e8: 18 c0 rjmp .+48 ; 0x41a <monome_add_controller+0x7a>
case C1_TX: player_tx[num_players] = C1_TX;
- 3d6: fd 01 movw r30, r26
- 3d8: e3 57 subi r30, 0x73 ; 115
- 3da: f9 4f sbci r31, 0xF9 ; 249
- 3dc: 90 83 st Z, r25
+ 3ea: fd 01 movw r30, r26
+ 3ec: e5 56 subi r30, 0x65 ; 101
+ 3ee: f9 4f sbci r31, 0xF9 ; 249
+ 3f0: 90 83 st Z, r25
player_rx[num_players] = C1_RX;
- 3de: a3 5f subi r26, 0xF3 ; 243
- 3e0: ba 4f sbci r27, 0xFA ; 250
- 3e2: 85 e0 ldi r24, 0x05 ; 5
- 3e4: 17 c0 rjmp .+46 ; 0x414 <monome_add_controller+0x88>
+ 3f2: a5 5e subi r26, 0xE5 ; 229
+ 3f4: ba 4f sbci r27, 0xFA ; 250
+ 3f6: 85 e0 ldi r24, 0x05 ; 5
+ 3f8: 17 c0 rjmp .+46 ; 0x428 <monome_add_controller+0x88>
break;
case C2_TX: player_tx[num_players] = C2_TX;
- 3e6: fd 01 movw r30, r26
- 3e8: e3 57 subi r30, 0x73 ; 115
- 3ea: f9 4f sbci r31, 0xF9 ; 249
- 3ec: 90 83 st Z, r25
+ 3fa: fd 01 movw r30, r26
+ 3fc: e5 56 subi r30, 0x65 ; 101
+ 3fe: f9 4f sbci r31, 0xF9 ; 249
+ 400: 90 83 st Z, r25
player_rx[num_players] = C2_RX;
- 3ee: a3 5f subi r26, 0xF3 ; 243
- 3f0: ba 4f sbci r27, 0xFA ; 250
- 3f2: 87 e0 ldi r24, 0x07 ; 7
- 3f4: 0f c0 rjmp .+30 ; 0x414 <monome_add_controller+0x88>
+ 402: a5 5e subi r26, 0xE5 ; 229
+ 404: ba 4f sbci r27, 0xFA ; 250
+ 406: 87 e0 ldi r24, 0x07 ; 7
+ 408: 0f c0 rjmp .+30 ; 0x428 <monome_add_controller+0x88>
break;
case C3_TX: player_tx[num_players] = C3_TX;
- 3f6: fd 01 movw r30, r26
- 3f8: e3 57 subi r30, 0x73 ; 115
- 3fa: f9 4f sbci r31, 0xF9 ; 249
- 3fc: 90 83 st Z, r25
+ 40a: fd 01 movw r30, r26
+ 40c: e5 56 subi r30, 0x65 ; 101
+ 40e: f9 4f sbci r31, 0xF9 ; 249
+ 410: 90 83 st Z, r25
player_rx[num_players] = C3_RX;
- 3fe: a3 5f subi r26, 0xF3 ; 243
- 400: ba 4f sbci r27, 0xFA ; 250
- 402: 89 e0 ldi r24, 0x09 ; 9
- 404: 07 c0 rjmp .+14 ; 0x414 <monome_add_controller+0x88>
+ 412: a5 5e subi r26, 0xE5 ; 229
+ 414: ba 4f sbci r27, 0xFA ; 250
+ 416: 89 e0 ldi r24, 0x09 ; 9
+ 418: 07 c0 rjmp .+14 ; 0x428 <monome_add_controller+0x88>
break;
case C4_TX: player_tx[num_players] = C4_TX;
- 406: fd 01 movw r30, r26
- 408: e3 57 subi r30, 0x73 ; 115
- 40a: f9 4f sbci r31, 0xF9 ; 249
- 40c: 90 83 st Z, r25
+ 41a: fd 01 movw r30, r26
+ 41c: e5 56 subi r30, 0x65 ; 101
+ 41e: f9 4f sbci r31, 0xF9 ; 249
+ 420: 90 83 st Z, r25
player_rx[num_players] = C4_RX;
- 40e: a3 5f subi r26, 0xF3 ; 243
- 410: ba 4f sbci r27, 0xFA ; 250
- 412: 8b e0 ldi r24, 0x0B ; 11
- 414: 8c 93 st X, r24
+ 422: a5 5e subi r26, 0xE5 ; 229
+ 424: ba 4f sbci r27, 0xFA ; 250
+ 426: 8b e0 ldi r24, 0x0B ; 11
+ 428: 8c 93 st X, r24
break;
default: break;
}
while( rtl_tx_pkt_check(player_rx[num_players])!=0 );
- 416: e0 91 0f 04 lds r30, 0x040F
- 41a: ff 27 eor r31, r31
- 41c: e3 5f subi r30, 0xF3 ; 243
- 41e: fa 4f sbci r31, 0xFA ; 250
- 420: 80 81 ld r24, Z
- 422: 0e 94 a8 03 call 0x750 ; 0x750 <rtl_tx_pkt_check>
- 426: 88 23 and r24, r24
- 428: b1 f7 brne .-20 ; 0x416 <monome_add_controller+0x8a>
+ 42a: e0 91 1d 04 lds r30, 0x041D
+ 42e: f0 e0 ldi r31, 0x00 ; 0
+ 430: e5 5e subi r30, 0xE5 ; 229
+ 432: fa 4f sbci r31, 0xFA ; 250
+ 434: 80 81 ld r24, Z
+ 436: 0e 94 00 04 call 0x800 ; 0x800 <rtl_tx_pkt_check>
+ 43a: 88 23 and r24, r24
+ 43c: b1 f7 brne .-20 ; 0x42a <monome_add_controller+0x8a>
sync_pkt.player = num_players;
- 42a: 80 91 0f 04 lds r24, 0x040F
- 42e: 80 93 85 04 sts 0x0485, r24
+ 43e: 20 91 1d 04 lds r18, 0x041D
+ 442: 20 93 93 04 sts 0x0493, r18
printf("player number sent: %d\r\n", sync_pkt.player);
- 432: 99 27 eor r25, r25
- 434: 9f 93 push r25
- 436: 8f 93 push r24
- 438: 80 e0 ldi r24, 0x00 ; 0
- 43a: 92 e0 ldi r25, 0x02 ; 2
- 43c: 9f 93 push r25
- 43e: 8f 93 push r24
- 440: 0e 94 d6 32 call 0x65ac ; 0x65ac <printf>
+ 446: 00 d0 rcall .+0 ; 0x448 <monome_add_controller+0xa8>
+ 448: 00 d0 rcall .+0 ; 0x44a <monome_add_controller+0xaa>
+ 44a: ed b7 in r30, 0x3d ; 61
+ 44c: fe b7 in r31, 0x3e ; 62
+ 44e: 31 96 adiw r30, 0x01 ; 1
+ 450: 80 e0 ldi r24, 0x00 ; 0
+ 452: 92 e0 ldi r25, 0x02 ; 2
+ 454: ad b7 in r26, 0x3d ; 61
+ 456: be b7 in r27, 0x3e ; 62
+ 458: 12 96 adiw r26, 0x02 ; 2
+ 45a: 9c 93 st X, r25
+ 45c: 8e 93 st -X, r24
+ 45e: 11 97 sbiw r26, 0x01 ; 1
+ 460: 22 83 std Z+2, r18 ; 0x02
+ 462: 13 82 std Z+3, r1 ; 0x03
+ 464: 0e 94 f5 31 call 0x63ea ; 0x63ea <printf>
memcpy(&tx_buf[PKT_DATA_START], &sync_pkt, sizeof(monome_comm_sync_pkt));
- 444: 80 91 85 04 lds r24, 0x0485
- 448: 80 93 17 05 sts 0x0517, r24
+ 468: 80 91 93 04 lds r24, 0x0493
+ 46c: 80 93 25 05 sts 0x0525, r24
tx_len = type(monome_comm_sync_pkt);
- 44c: 84 e0 ldi r24, 0x04 ; 4
- 44e: 80 93 96 05 sts 0x0596, r24
+ 470: 84 e0 ldi r24, 0x04 ; 4
+ 472: 80 93 a4 05 sts 0x05A4, r24
rtl_tx_pkt( tx_buf, tx_len, player_rx[num_players]);
- 452: e0 91 0f 04 lds r30, 0x040F
- 456: ff 27 eor r31, r31
- 458: e3 5f subi r30, 0xF3 ; 243
- 45a: fa 4f sbci r31, 0xFA ; 250
- 45c: 40 81 ld r20, Z
- 45e: 64 e0 ldi r22, 0x04 ; 4
- 460: 84 e1 ldi r24, 0x14 ; 20
- 462: 95 e0 ldi r25, 0x05 ; 5
- 464: 0e 94 c0 07 call 0xf80 ; 0xf80 <rtl_tx_pkt>
+ 476: 0f 90 pop r0
+ 478: 0f 90 pop r0
+ 47a: 0f 90 pop r0
+ 47c: 0f 90 pop r0
+ 47e: e0 91 1d 04 lds r30, 0x041D
+ 482: f0 e0 ldi r31, 0x00 ; 0
+ 484: e5 5e subi r30, 0xE5 ; 229
+ 486: fa 4f sbci r31, 0xFA ; 250
+ 488: 82 e2 ldi r24, 0x22 ; 34
+ 48a: 95 e0 ldi r25, 0x05 ; 5
+ 48c: 64 e0 ldi r22, 0x04 ; 4
+ 48e: 40 81 ld r20, Z
+ 490: 0e 94 ee 07 call 0xfdc ; 0xfdc <rtl_tx_pkt>
rtl_wait_until_tx_done(player_rx[num_players]);
- 468: e0 91 0f 04 lds r30, 0x040F
- 46c: ff 27 eor r31, r31
- 46e: e3 5f subi r30, 0xF3 ; 243
- 470: fa 4f sbci r31, 0xFA ; 250
- 472: 80 81 ld r24, Z
- 474: 0e 94 64 0a call 0x14c8 ; 0x14c8 <rtl_wait_until_tx_done>
+ 494: e0 91 1d 04 lds r30, 0x041D
+ 498: f0 e0 ldi r31, 0x00 ; 0
+ 49a: e5 5e subi r30, 0xE5 ; 229
+ 49c: fa 4f sbci r31, 0xFA ; 250
+ 49e: 80 81 ld r24, Z
+ 4a0: 0e 94 ac 0a call 0x1558 ; 0x1558 <rtl_wait_until_tx_done>
num_players++;
- 478: 80 91 0f 04 lds r24, 0x040F
- 47c: 8f 5f subi r24, 0xFF ; 255
- 47e: 80 93 0f 04 sts 0x040F, r24
+ 4a4: 20 91 1d 04 lds r18, 0x041D
+ 4a8: 2f 5f subi r18, 0xFF ; 255
+ 4aa: 20 93 1d 04 sts 0x041D, r18
printf("added new player: player %d\r\n", num_players);
- 482: 99 27 eor r25, r25
- 484: 9f 93 push r25
- 486: 8f 93 push r24
- 488: 89 e1 ldi r24, 0x19 ; 25
- 48a: 92 e0 ldi r25, 0x02 ; 2
- 48c: 9f 93 push r25
- 48e: 8f 93 push r24
- 490: 0e 94 d6 32 call 0x65ac ; 0x65ac <printf>
- 494: 8d b7 in r24, 0x3d ; 61
- 496: 9e b7 in r25, 0x3e ; 62
- 498: 08 96 adiw r24, 0x08 ; 8
- 49a: 0f b6 in r0, 0x3f ; 63
- 49c: f8 94 cli
- 49e: 9e bf out 0x3e, r25 ; 62
- 4a0: 0f be out 0x3f, r0 ; 63
- 4a2: 8d bf out 0x3d, r24 ; 61
- 4a4: 08 95 ret
-
-000004a6 <monome_comm_init>:
- 4a6: 82 e0 ldi r24, 0x02 ; 2
- 4a8: 0e 94 8b 04 call 0x916 ; 0x916 <rtl_init>
- 4ac: 41 e0 ldi r20, 0x01 ; 1
- 4ae: 62 e0 ldi r22, 0x02 ; 2
- 4b0: 80 e0 ldi r24, 0x00 ; 0
- 4b2: 0e 94 d6 0a call 0x15ac ; 0x15ac <rtl_set_schedule>
- 4b6: 41 e0 ldi r20, 0x01 ; 1
- 4b8: 64 e0 ldi r22, 0x04 ; 4
- 4ba: 80 e0 ldi r24, 0x00 ; 0
- 4bc: 0e 94 d6 0a call 0x15ac ; 0x15ac <rtl_set_schedule>
- 4c0: 41 e0 ldi r20, 0x01 ; 1
- 4c2: 66 e0 ldi r22, 0x06 ; 6
- 4c4: 80 e0 ldi r24, 0x00 ; 0
- 4c6: 0e 94 d6 0a call 0x15ac ; 0x15ac <rtl_set_schedule>
- 4ca: 41 e0 ldi r20, 0x01 ; 1
- 4cc: 68 e0 ldi r22, 0x08 ; 8
- 4ce: 80 e0 ldi r24, 0x00 ; 0
- 4d0: 0e 94 d6 0a call 0x15ac ; 0x15ac <rtl_set_schedule>
- 4d4: 41 e0 ldi r20, 0x01 ; 1
- 4d6: 63 e0 ldi r22, 0x03 ; 3
- 4d8: 81 e0 ldi r24, 0x01 ; 1
- 4da: 0e 94 d6 0a call 0x15ac ; 0x15ac <rtl_set_schedule>
- 4de: 41 e0 ldi r20, 0x01 ; 1
- 4e0: 65 e0 ldi r22, 0x05 ; 5
- 4e2: 81 e0 ldi r24, 0x01 ; 1
- 4e4: 0e 94 d6 0a call 0x15ac ; 0x15ac <rtl_set_schedule>
- 4e8: 41 e0 ldi r20, 0x01 ; 1
- 4ea: 67 e0 ldi r22, 0x07 ; 7
- 4ec: 81 e0 ldi r24, 0x01 ; 1
- 4ee: 0e 94 d6 0a call 0x15ac ; 0x15ac <rtl_set_schedule>
- 4f2: 41 e0 ldi r20, 0x01 ; 1
- 4f4: 69 e0 ldi r22, 0x09 ; 9
- 4f6: 81 e0 ldi r24, 0x01 ; 1
- 4f8: 0e 94 d6 0a call 0x15ac ; 0x15ac <rtl_set_schedule>
- 4fc: 41 e0 ldi r20, 0x01 ; 1
- 4fe: 6b e0 ldi r22, 0x0B ; 11
- 500: 81 e0 ldi r24, 0x01 ; 1
- 502: 0e 94 d6 0a call 0x15ac ; 0x15ac <rtl_set_schedule>
- 506: 0e 94 47 04 call 0x88e ; 0x88e <rtl_start>
- 50a: 64 e7 ldi r22, 0x74 ; 116
- 50c: 81 e1 ldi r24, 0x11 ; 17
- 50e: 94 e0 ldi r25, 0x04 ; 4
- 510: 0e 94 e2 03 call 0x7c4 ; 0x7c4 <rtl_rx_pkt_set_buffer>
- 514: 08 95 ret
-
-00000516 <nrk_create_taskset>:
- 516: 88 ee ldi r24, 0xE8 ; 232
- 518: 92 e0 ldi r25, 0x02 ; 2
- 51a: 90 93 da 03 sts 0x03DA, r25
- 51e: 80 93 d9 03 sts 0x03D9, r24
- 522: 86 e0 ldi r24, 0x06 ; 6
- 524: 95 e0 ldi r25, 0x05 ; 5
- 526: 90 93 d6 03 sts 0x03D6, r25
- 52a: 80 93 d5 03 sts 0x03D5, r24
- 52e: 87 e8 ldi r24, 0x87 ; 135
- 530: 94 e0 ldi r25, 0x04 ; 4
- 532: 90 93 d8 03 sts 0x03D8, r25
- 536: 80 93 d7 03 sts 0x03D7, r24
- 53a: 82 e0 ldi r24, 0x02 ; 2
- 53c: 80 93 dc 03 sts 0x03DC, r24
- 540: 81 e0 ldi r24, 0x01 ; 1
- 542: 80 93 db 03 sts 0x03DB, r24
- 546: 80 93 dd 03 sts 0x03DD, r24
- 54a: 80 93 de 03 sts 0x03DE, r24
- 54e: 81 e0 ldi r24, 0x01 ; 1
- 550: 90 e0 ldi r25, 0x00 ; 0
- 552: a0 e0 ldi r26, 0x00 ; 0
- 554: b0 e0 ldi r27, 0x00 ; 0
- 556: 80 93 df 03 sts 0x03DF, r24
- 55a: 90 93 e0 03 sts 0x03E0, r25
- 55e: a0 93 e1 03 sts 0x03E1, r26
- 562: b0 93 e2 03 sts 0x03E2, r27
- 566: 10 92 e3 03 sts 0x03E3, r1
- 56a: 10 92 e4 03 sts 0x03E4, r1
- 56e: 10 92 e5 03 sts 0x03E5, r1
- 572: 10 92 e6 03 sts 0x03E6, r1
- 576: 10 92 e7 03 sts 0x03E7, r1
- 57a: 10 92 e8 03 sts 0x03E8, r1
- 57e: 10 92 e9 03 sts 0x03E9, r1
- 582: 10 92 ea 03 sts 0x03EA, r1
- 586: 80 e0 ldi r24, 0x00 ; 0
- 588: 91 ee ldi r25, 0xE1 ; 225
- 58a: a5 ef ldi r26, 0xF5 ; 245
- 58c: b5 e0 ldi r27, 0x05 ; 5
- 58e: 80 93 eb 03 sts 0x03EB, r24
- 592: 90 93 ec 03 sts 0x03EC, r25
- 596: a0 93 ed 03 sts 0x03ED, r26
- 59a: b0 93 ee 03 sts 0x03EE, r27
- 59e: 10 92 ef 03 sts 0x03EF, r1
- 5a2: 10 92 f0 03 sts 0x03F0, r1
- 5a6: 10 92 f1 03 sts 0x03F1, r1
- 5aa: 10 92 f2 03 sts 0x03F2, r1
- 5ae: 10 92 f3 03 sts 0x03F3, r1
- 5b2: 10 92 f4 03 sts 0x03F4, r1
- 5b6: 10 92 f5 03 sts 0x03F5, r1
- 5ba: 10 92 f6 03 sts 0x03F6, r1
- 5be: 84 ed ldi r24, 0xD4 ; 212
- 5c0: 93 e0 ldi r25, 0x03 ; 3
- 5c2: 0e 94 7e 26 call 0x4cfc ; 0x4cfc <nrk_activate_task>
- 5c6: 87 e3 ldi r24, 0x37 ; 55
- 5c8: 92 e0 ldi r25, 0x02 ; 2
- 5ca: 0e 94 f6 32 call 0x65ec ; 0x65ec <puts>
- 5ce: 08 95 ret
-
-000005d0 <Task1>:
- 5d0: 8f 92 push r8
- 5d2: 9f 92 push r9
- 5d4: af 92 push r10
- 5d6: bf 92 push r11
- 5d8: cf 92 push r12
- 5da: df 92 push r13
- 5dc: ef 92 push r14
- 5de: ff 92 push r15
- 5e0: 0f 93 push r16
- 5e2: 1f 93 push r17
- 5e4: cf 93 push r28
- 5e6: df 93 push r29
- 5e8: cd b7 in r28, 0x3d ; 61
- 5ea: de b7 in r29, 0x3e ; 62
- 5ec: 23 97 sbiw r28, 0x03 ; 3
- 5ee: 0f b6 in r0, 0x3f ; 63
- 5f0: f8 94 cli
- 5f2: de bf out 0x3e, r29 ; 62
- 5f4: 0f be out 0x3f, r0 ; 63
- 5f6: cd bf out 0x3d, r28 ; 61
- 5f8: 0e 94 53 02 call 0x4a6 ; 0x4a6 <monome_comm_init>
- 5fc: 0e 94 b0 01 call 0x360 ; 0x360 <monome_setup_system>
- 600: 02 c0 rjmp .+4 ; 0x606 <Task1+0x36>
- 602: 0e 94 40 26 call 0x4c80 ; 0x4c80 <nrk_wait_until_next_period>
- 606: 0e 94 8e 03 call 0x71c ; 0x71c <rtl_ready>
- 60a: 88 23 and r24, r24
- 60c: d1 f3 breq .-12 ; 0x602 <Task1+0x32>
- 60e: 22 e0 ldi r18, 0x02 ; 2
- 610: 82 2e mov r8, r18
- 612: 91 2c mov r9, r1
- 614: 8c 0e add r8, r28
- 616: 9d 1e adc r9, r29
- 618: 93 e0 ldi r25, 0x03 ; 3
- 61a: a9 2e mov r10, r25
- 61c: b1 2c mov r11, r1
- 61e: ac 0e add r10, r28
- 620: bd 1e adc r11, r29
- 622: 6e 01 movw r12, r28
- 624: 08 94 sec
- 626: c1 1c adc r12, r1
- 628: d1 1c adc r13, r1
- 62a: 84 e4 ldi r24, 0x44 ; 68
- 62c: e8 2e mov r14, r24
- 62e: 82 e0 ldi r24, 0x02 ; 2
- 630: f8 2e mov r15, r24
- 632: 01 e6 ldi r16, 0x61 ; 97
- 634: 12 e0 ldi r17, 0x02 ; 2
- 636: 0e 94 c3 03 call 0x786 ; 0x786 <rtl_rx_pkt_check>
- 63a: 88 23 and r24, r24
- 63c: a9 f1 breq .+106 ; 0x6a8 <Task1+0xd8>
- 63e: 81 e0 ldi r24, 0x01 ; 1
- 640: 90 e0 ldi r25, 0x00 ; 0
- 642: 0e 94 78 1b call 0x36f0 ; 0x36f0 <nrk_led_set>
- 646: a4 01 movw r20, r8
- 648: b5 01 movw r22, r10
- 64a: c6 01 movw r24, r12
- 64c: 0e 94 9d 0a call 0x153a ; 0x153a <rtl_rx_pkt_get>
- 650: 89 81 ldd r24, Y+1 ; 0x01
- 652: 99 27 eor r25, r25
- 654: 9f 93 push r25
- 656: 8f 93 push r24
- 658: 8a 81 ldd r24, Y+2 ; 0x02
- 65a: 99 27 eor r25, r25
- 65c: 9f 93 push r25
- 65e: 8f 93 push r24
- 660: ff 92 push r15
- 662: ef 92 push r14
- 664: 0e 94 d6 32 call 0x65ac ; 0x65ac <printf>
- 668: 8d b7 in r24, 0x3d ; 61
- 66a: 9e b7 in r25, 0x3e ; 62
- 66c: 06 96 adiw r24, 0x06 ; 6
- 66e: 0f b6 in r0, 0x3f ; 63
- 670: f8 94 cli
- 672: 9e bf out 0x3e, r25 ; 62
- 674: 0f be out 0x3f, r0 ; 63
- 676: 8d bf out 0x3d, r24 ; 61
- 678: 89 81 ldd r24, Y+1 ; 0x01
- 67a: 84 30 cpi r24, 0x04 ; 4
- 67c: 89 f4 brne .+34 ; 0x6a0 <Task1+0xd0>
- 67e: 0e 94 a5 03 call 0x74a ; 0x74a <rtl_rx_pkt_release>
- 682: 80 91 f7 03 lds r24, 0x03F7
- 686: 81 30 cpi r24, 0x01 ; 1
- 688: 41 f4 brne .+16 ; 0x69a <Task1+0xca>
- 68a: 80 91 0f 04 lds r24, 0x040F
- 68e: 84 30 cpi r24, 0x04 ; 4
- 690: 20 f4 brcc .+8 ; 0x69a <Task1+0xca>
- 692: 8a 81 ldd r24, Y+2 ; 0x02
- 694: 0e 94 c6 01 call 0x38c ; 0x38c <monome_add_controller>
- 698: 03 c0 rjmp .+6 ; 0x6a0 <Task1+0xd0>
- 69a: c8 01 movw r24, r16
- 69c: 0e 94 f6 32 call 0x65ec ; 0x65ec <puts>
- 6a0: 81 e0 ldi r24, 0x01 ; 1
- 6a2: 90 e0 ldi r25, 0x00 ; 0
- 6a4: 0e 94 5b 1b call 0x36b6 ; 0x36b6 <nrk_led_clr>
- 6a8: 0e 94 40 26 call 0x4c80 ; 0x4c80 <nrk_wait_until_next_period>
- 6ac: c4 cf rjmp .-120 ; 0x636 <Task1+0x66>
-
-000006ae <main>:
- 6ae: cf ef ldi r28, 0xFF ; 255
- 6b0: d1 e2 ldi r29, 0x21 ; 33
- 6b2: de bf out 0x3e, r29 ; 62
- 6b4: cd bf out 0x3d, r28 ; 61
- 6b6: 0e 94 bb 17 call 0x2f76 ; 0x2f76 <nrk_setup_ports>
- 6ba: 87 e0 ldi r24, 0x07 ; 7
- 6bc: 90 e0 ldi r25, 0x00 ; 0
- 6be: 0e 94 f0 1b call 0x37e0 ; 0x37e0 <nrk_setup_uart>
- 6c2: 83 e8 ldi r24, 0x83 ; 131
- 6c4: 92 e0 ldi r25, 0x02 ; 2
- 6c6: 0e 94 f6 32 call 0x65ec ; 0x65ec <puts>
- 6ca: 0e 94 4b 1e call 0x3c96 ; 0x3c96 <nrk_init>
- 6ce: 80 e0 ldi r24, 0x00 ; 0
- 6d0: 90 e0 ldi r25, 0x00 ; 0
- 6d2: 0e 94 5b 1b call 0x36b6 ; 0x36b6 <nrk_led_clr>
- 6d6: 81 e0 ldi r24, 0x01 ; 1
- 6d8: 90 e0 ldi r25, 0x00 ; 0
- 6da: 0e 94 5b 1b call 0x36b6 ; 0x36b6 <nrk_led_clr>
- 6de: 82 e0 ldi r24, 0x02 ; 2
- 6e0: 90 e0 ldi r25, 0x00 ; 0
- 6e2: 0e 94 5b 1b call 0x36b6 ; 0x36b6 <nrk_led_clr>
- 6e6: 83 e0 ldi r24, 0x03 ; 3
- 6e8: 90 e0 ldi r25, 0x00 ; 0
- 6ea: 0e 94 5b 1b call 0x36b6 ; 0x36b6 <nrk_led_clr>
- 6ee: 20 e0 ldi r18, 0x00 ; 0
- 6f0: 30 e0 ldi r19, 0x00 ; 0
- 6f2: 40 e0 ldi r20, 0x00 ; 0
- 6f4: 50 e0 ldi r21, 0x00 ; 0
- 6f6: 60 e0 ldi r22, 0x00 ; 0
- 6f8: 70 e0 ldi r23, 0x00 ; 0
- 6fa: 80 e0 ldi r24, 0x00 ; 0
- 6fc: 90 e0 ldi r25, 0x00 ; 0
- 6fe: 0e 94 e2 27 call 0x4fc4 ; 0x4fc4 <nrk_time_set>
- 702: 0e 94 f2 03 call 0x7e4 ; 0x7e4 <rtl_task_config>
- 706: 0e 94 8b 02 call 0x516 ; 0x516 <nrk_create_taskset>
- 70a: 0e 94 eb 1d call 0x3bd6 ; 0x3bd6 <nrk_start>
- 70e: 80 e0 ldi r24, 0x00 ; 0
- 710: 90 e0 ldi r25, 0x00 ; 0
- 712: 0c 94 dc 34 jmp 0x69b8 ; 0x69b8 <_exit>
-
-00000716 <rtl_wait_until_global_slot>:
+ 4ae: 00 d0 rcall .+0 ; 0x4b0
<monome_add_controller+0x110>
+ 4b0: 00 d0 rcall .+0 ; 0x4b2
<monome_add_controller+0x112>
+ 4b2: ed b7 in r30, 0x3d ; 61
+ 4b4: fe b7 in r31, 0x3e ; 62
+ 4b6: 31 96 adiw r30, 0x01 ; 1
+ 4b8: 89 e1 ldi r24, 0x19 ; 25
+ 4ba: 92 e0 ldi r25, 0x02 ; 2
+ 4bc: ad b7 in r26, 0x3d ; 61
+ 4be: be b7 in r27, 0x3e ; 62
+ 4c0: 12 96 adiw r26, 0x02 ; 2
+ 4c2: 9c 93 st X, r25
+ 4c4: 8e 93 st -X, r24
+ 4c6: 11 97 sbiw r26, 0x01 ; 1
+ 4c8: 22 83 std Z+2, r18 ; 0x02
+ 4ca: 13 82 std Z+3, r1 ; 0x03
+ 4cc: 0e 94 f5 31 call 0x63ea ; 0x63ea <printf>
+ 4d0: 0f 90 pop r0
+ 4d2: 0f 90 pop r0
+ 4d4: 0f 90 pop r0
+ 4d6: 0f 90 pop r0
+ 4d8: 08 95 ret
+
+000004da <monome_comm_init>:
+
+ printf ("Create done\r\n");
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/monome/controller_base_comm/base_station/main.lst Sat Dec 11
12:36:09 2010
+++ /trunk/monome/controller_base_comm/base_station/main.lst Tue Dec 21
13:38:34 2010
@@ -2,916 +2,1024 @@
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
- 5 __tmp_reg__ = 0
- 6 __zero_reg__ = 1
- 7 .global __do_copy_data
- 8 .global __do_clear_bss
- 11 .text
- 12 .Ltext0:
- 138 .global monome_setup_system
- 140 monome_setup_system:
- 141 .stabd 46,0,0
- 1:main.c **** /*
- 2:main.c **** * main.c
- 3:main.c **** *
- 4:main.c **** *
- 5:main.c **** * Created by Philip Asare on 12/6/10.
- 6:main.c **** * Copyright 2010. All rights reserved.
+ 5 __CCP__ = 0x34
+ 6 __tmp_reg__ = 0
+ 7 __zero_reg__ = 1
+ 8 .global __do_copy_data
+ 9 .global __do_clear_bss
+ 12 .text
+ 13 .Ltext0:
+ 143 .global monome_setup_system
+ 145 monome_setup_system:
+ 146 .stabd 46,0,0
+ 0:main.c **** /*
+ 1:main.c **** * main.c
+ 2:main.c **** *
+ 3:main.c **** *
+ 4:main.c **** * Created by Philip Asare on 12/6/10.
+ 5:main.c **** * Copyright 2010. All rights reserved.
+ 6:main.c **** *
7:main.c **** *
- 8:main.c **** *
- 9:main.c **** * monome sketch-it base station
- 10:main.c **** *
- 11:main.c **** * communication
- 12:main.c **** * -------------
- 13:main.c **** * to controllers --> wireless (RT-Link)
- 14:main.c **** * to console display --> UART
- 15:main.c **** *
- 16:main.c **** */
+ 8:main.c **** * monome sketch-it base station
+ 9:main.c **** *
+ 10:main.c **** * communication
+ 11:main.c **** * -------------
+ 12:main.c **** * to controllers --> wireless (RT-Link)
+ 13:main.c **** * to console display --> UART
+ 14:main.c **** *
+ 15:main.c **** */
+ 16:main.c ****
17:main.c ****
- 18:main.c ****
- 19:main.c **** #include <nrk.h>
- 20:main.c **** #include <include.h>
- 21:main.c **** #include <ulib.h>
- 22:main.c **** #include <stdio.h>
- 23:main.c **** #include <avr/sleep.h>
- 24:main.c **** #include <hal.h>
- 25:main.c **** #include <rt_link.h>
- 26:main.c **** #include <nrk_error.h>
- 27:main.c ****
- 28:main.c **** /* controller tx slots --> base station rx slots */
- 29:main.c **** #define C1_TX 2
- 30:main.c **** #define C2_TX 4
- 31:main.c **** #define C3_TX 6
- 32:main.c **** #define C4_TX 8
- 33:main.c ****
- 34:main.c **** /* controller rx slots --> base station rx slots */
- 35:main.c **** #define ALL_RX 3
- 36:main.c **** #define C1_RX 5
- 37:main.c **** #define C2_RX 7
- 38:main.c **** #define C3_RX 9
- 39:main.c **** #define C4_RX 11
- 40:main.c ****
- 41:main.c **** /* game states and controller tracking */
- 42:main.c **** #define MAX_NUM_PLAYERS 4
- 43:main.c ****
- 44:main.c **** uint8_t state, num_players;
- 45:main.c **** uint8_t player_tx[MAX_NUM_PLAYERS];
- 46:main.c **** uint8_t player_rx[MAX_NUM_PLAYERS];
- 47:main.c ****
- 48:main.c **** #define SYNC 1
- 49:main.c **** #define SELECT (1<<1)
- 50:main.c **** #define PREGAME (1<<2)
- 51:main.c ****
- 52:main.c **** /* monome helper functions */
- 53:main.c ****
- 54:main.c **** #define type(x) (sizeof(x) + PKT_DATA_START)
- 55:main.c ****
- 56:main.c **** typedef struct{
- 57:main.c **** uint8_t player;
- 58:main.c **** } monome_comm_sync_pkt;
- 59:main.c ****
- 60:main.c **** monome_comm_sync_pkt sync_pkt;
- 61:main.c ****
- 62:main.c **** uint8_t tx_len;
+ 18:main.c **** #include <nrk.h>
+ 19:main.c **** #include <include.h>
+ 20:main.c **** #include <ulib.h>
+ 21:main.c **** #include <stdio.h>
+ 22:main.c **** #include <avr/sleep.h>
+ 23:main.c **** #include <hal.h>
+ 24:main.c **** #include <rt_link.h>
+ 25:main.c **** #include <nrk_error.h>
+ 26:main.c ****
+ 27:main.c **** /* controller tx slots --> base station rx slots */
+ 28:main.c **** #define C1_TX 2
+ 29:main.c **** #define C2_TX 4
+ 30:main.c **** #define C3_TX 6
+ 31:main.c **** #define C4_TX 8
+ 32:main.c ****
+ 33:main.c **** /* controller rx slots --> base station rx slots */
+ 34:main.c **** #define ALL_RX 3
+ 35:main.c **** #define C1_RX 5
+ 36:main.c **** #define C2_RX 7
+ 37:main.c **** #define C3_RX 9
+ 38:main.c **** #define C4_RX 11
+ 39:main.c ****
+ 40:main.c **** /* game states and controller tracking */
+ 41:main.c **** #define MAX_NUM_PLAYERS 4
+ 42:main.c ****
+ 43:main.c **** uint8_t state, num_players;
+ 44:main.c **** uint8_t player_tx[MAX_NUM_PLAYERS];
+ 45:main.c **** uint8_t player_rx[MAX_NUM_PLAYERS];
+ 46:main.c ****
+ 47:main.c **** #define SYNC 1
+ 48:main.c **** #define SELECT (1<<1)
+ 49:main.c **** #define PREGAME (1<<2)
+ 50:main.c ****
+ 51:main.c **** /* monome helper functions */
+ 52:main.c ****
+ 53:main.c **** #define type(x) (sizeof(x) + PKT_DATA_START)
+ 54:main.c ****
+ 55:main.c **** typedef struct{
+ 56:main.c **** uint8_t player;
+ 57:main.c **** } monome_comm_sync_pkt;
+ 58:main.c ****
+ 59:main.c **** typedef struct{
+ 60:main.c **** uint8_t players;
+ 61:main.c **** uint8_t game_type;
+ 62:main.c **** } monome_comm_select_pkt;
63:main.c ****
- 64:main.c **** /* task setup */
+ 64:main.c **** monome_comm_sync_pkt sync_pkt;
65:main.c ****
- 66:main.c **** NRK_STK Stack1[NRK_APP_STACKSIZE];
- 67:main.c **** nrk_task_type TaskOne;
- 68:main.c **** void Task1(void);
+ 66:main.c **** uint8_t tx_len;
+ 67:main.c ****
+ 68:main.c **** /* task setup */
69:main.c ****
- 70:main.c **** inline void monome_comm_init();
- 71:main.c **** inline void monome_setup_system();
- 72:main.c **** inline void monome_add_controller(uint8_t slot);
- 73:main.c **** void nrk_create_taskset();
- 74:main.c ****
- 75:main.c **** uint8_t tx_buf[RF_MAX_PAYLOAD_SIZE];
- 76:main.c **** uint8_t rx_buf[RF_MAX_PAYLOAD_SIZE];
- 77:main.c ****
- 78:main.c **** int
- 79:main.c **** main ()
- 80:main.c **** {
- 81:main.c **** uint16_t div;
- 82:main.c **** nrk_setup_ports();
- 83:main.c **** nrk_setup_uart(UART_BAUDRATE_115K2);
- 84:main.c ****
- 85:main.c **** printf( "Starting up...\r\n" );
- 86:main.c ****
- 87:main.c ****
- 88:main.c **** nrk_init();
- 89:main.c ****
- 90:main.c **** nrk_led_clr(0);
- 91:main.c **** nrk_led_clr(1);
- 92:main.c **** nrk_led_clr(2);
- 93:main.c **** nrk_led_clr(3);
- 94:main.c ****
- 95:main.c **** nrk_time_set(0,0);
- 96:main.c ****
- 97:main.c ****
- 98:main.c **** rtl_task_config();
- 99:main.c ****
- 100:main.c **** nrk_create_taskset ();
+ 70:main.c **** NRK_STK Stack1[NRK_APP_STACKSIZE];
+ 71:main.c **** nrk_task_type TaskOne;
+ 72:main.c **** void Task1(void);
+ 73:main.c ****
+ 74:main.c **** inline void monome_comm_init();
+ 75:main.c **** inline void monome_setup_system();
+ 76:main.c **** inline void monome_add_controller(uint8_t slot);
+ 77:main.c **** void nrk_create_taskset();
+ 78:main.c ****
+ 79:main.c **** uint8_t tx_buf[RF_MAX_PAYLOAD_SIZE];
+ 80:main.c **** uint8_t rx_buf[RF_MAX_PAYLOAD_SIZE];
+ 81:main.c ****
+ 82:main.c **** int
+ 83:main.c **** main ()
+ 84:main.c **** {
+ 85:main.c **** uint16_t div;
+ 86:main.c **** nrk_setup_ports();
+ 87:main.c **** nrk_setup_uart(UART_BAUDRATE_115K2);
+ 88:main.c ****
+ 89:main.c **** printf( "Starting up...\r\n" );
+ 90:main.c ****
+ 91:main.c ****
+ 92:main.c **** nrk_init();
+ 93:main.c ****
+ 94:main.c **** nrk_led_clr(0);
+ 95:main.c **** nrk_led_clr(1);
+ 96:main.c **** nrk_led_clr(2);
+ 97:main.c **** nrk_led_clr(3);
+ 98:main.c ****
+ 99:main.c **** nrk_time_set(0,0);
+ 100:main.c ****
101:main.c ****
- 102:main.c **** nrk_start();
+ 102:main.c **** rtl_task_config();
103:main.c ****
- 104:main.c **** return 0;
- 105:main.c **** }
- 106:main.c ****
- 107:main.c **** void Task1()
- 108:main.c **** {
- 109:main.c **** //uint8_t j, i;
- 110:main.c **** uint8_t *local_rx_buf;
- 111:main.c **** uint8_t length,slot;
- 112:main.c **** int8_t rssi;
- 113:main.c ****
- 114:main.c **** monome_comm_init();
- 115:main.c **** monome_setup_system();
- 116:main.c **** while(!rtl_ready()) nrk_wait_until_next_period();
+ 104:main.c **** nrk_create_taskset ();
+ 105:main.c ****
+ 106:main.c **** nrk_start();
+ 107:main.c ****
+ 108:main.c **** return 0;
+ 109:main.c **** }
+ 110:main.c ****
+ 111:main.c **** void Task1()
+ 112:main.c **** {
+ 113:main.c **** //uint8_t j, i;
+ 114:main.c **** uint8_t *local_rx_buf;
+ 115:main.c **** uint8_t length,slot;
+ 116:main.c **** int8_t rssi;
117:main.c ****
- 118:main.c ****
- 119:main.c ****
- 120:main.c **** while(1){
- 121:main.c **** if( rtl_rx_pkt_check()!=0 )
- 122:main.c **** {
- 123:main.c **** nrk_led_set(BLUE_LED);
- 124:main.c **** local_rx_buf=rtl_rx_pkt_get(&length, &rssi,
&slot);
- 125:main.c **** printf( "Got Packet on slot %d %d:
\r\n",slot,length );
- 126:main.c **** if(length == type(monome_comm_sync_pkt)){
- 127:main.c **** rtl_rx_pkt_release();
- 128:main.c **** if((state == SYNC) && (num_players <
MAX_NUM_PLAYERS)){
- 129:main.c **** monome_add_controller(slot);
- 130:main.c **** }
- 131:main.c **** else{
- 132:main.c **** printf("maximum number of players
synced\r\n");
- 133:main.c **** }
- 134:main.c **** }
- 135:main.c **** nrk_led_clr(BLUE_LED);
- 136:main.c **** }
- 137:main.c ****
- 138:main.c **** nrk_wait_until_next_period();
- 139:main.c ****
- 140:main.c **** }
- 141:main.c ****
- 142:main.c ****
- 143:main.c ****
- 144:main.c ****
- 145:main.c **** }
- 146:main.c ****
+ 118:main.c **** monome_comm_init();
+ 119:main.c **** monome_setup_system();
+ 120:main.c **** while(!rtl_ready()) nrk_wait_until_next_period();
+ 121:main.c ****
+ 122:main.c ****
+ 123:main.c ****
+ 124:main.c **** while(1){
+ 125:main.c **** printf ( "base station\r\n" );
+ 126:main.c **** if( rtl_rx_pkt_check()!=0 )
+ 127:main.c **** {
+ 128:main.c **** nrk_led_set(BLUE_LED);
+ 129:main.c **** local_rx_buf=rtl_rx_pkt_get(&length, &rssi,
&slot);
+ 130:main.c **** printf( "Got Packet on slot %d %d:
\r\n",slot,length );
+ 131:main.c **** if(length == type(monome_comm_sync_pkt)){
+ 132:main.c **** rtl_rx_pkt_release();
+ 133:main.c **** if((state & SYNC) && (num_players <
MAX_NUM_PLAYERS)){
+ 134:main.c **** monome_add_controller(slot);
+ 135:main.c **** }
+ 136:main.c **** else{
+ 137:main.c **** printf("maximum number of players
synced\r\n");
+ 138:main.c **** }
+ 139:main.c **** }
+ 140:main.c **** if(length == type(monome_comm_select_pkt)){
+ 141:main.c ****
+ 142:main.c **** }
+ 143:main.c **** nrk_led_clr(BLUE_LED);
+ 144:main.c **** }
+ 145:main.c ****
+ 146:main.c **** nrk_wait_until_next_period();
147:main.c ****
- 148:main.c **** void
- 149:main.c **** nrk_create_taskset()
- 150:main.c **** {
- 151:main.c ****
- 152:main.c ****
- 153:main.c **** TaskOne.task = Task1;
- 154:main.c **** TaskOne.Ptos = (void *)
&Stack1[NRK_APP_STACKSIZE-1];
- 155:main.c **** TaskOne.Pbos = (void *) &Stack1[0];
- 156:main.c **** TaskOne.prio = 2;
- 157:main.c **** TaskOne.FirstActivation = TRUE;
- 158:main.c **** TaskOne.Type = BASIC_TASK;
- 159:main.c **** TaskOne.SchType = PREEMPTIVE;
- 160:main.c **** TaskOne.period.secs = 1;
- 161:main.c **** TaskOne.period.nano_secs = 0;
- 162:main.c **** TaskOne.cpu_reserve.secs = 0;
- 163:main.c **** TaskOne.cpu_reserve.nano_secs = 100*NANOS_PER_MS;
- 164:main.c **** TaskOne.offset.secs = 0;
- 165:main.c **** TaskOne.offset.nano_secs= 0;
- 166:main.c **** nrk_activate_task (&TaskOne);
- 167:main.c ****
- 168:main.c ****
- 169:main.c **** printf ("Create done\r\n");
- 170:main.c **** }
- 171:main.c ****
- 172:main.c **** inline void monome_comm_init(){
- 173:main.c **** rtl_init (RTL_COORDINATOR);
- 174:main.c ****
- 175:main.c **** /* rx schedules */
- 176:main.c **** rtl_set_schedule( RTL_RX, C1_TX, 1 );
- 177:main.c **** rtl_set_schedule( RTL_RX, C2_TX, 1 );
- 178:main.c **** rtl_set_schedule( RTL_RX, C3_TX, 1 );
- 179:main.c **** rtl_set_schedule( RTL_RX, C4_TX, 1 );
- 180:main.c ****
- 181:main.c **** /* tx schedules */
- 182:main.c **** rtl_set_schedule( RTL_TX, ALL_RX, 1 );
- 183:main.c **** rtl_set_schedule( RTL_TX, C1_RX, 1 );
- 184:main.c **** rtl_set_schedule( RTL_TX, C2_RX, 1 );
- 185:main.c **** rtl_set_schedule( RTL_TX, C3_RX, 1 );
- 186:main.c **** rtl_set_schedule( RTL_TX, C4_RX, 1 );
- 187:main.c ****
- 188:main.c **** rtl_start();
- 189:main.c **** rtl_rx_pkt_set_buffer(rx_buf,
RF_MAX_PAYLOAD_SIZE);
- 190:main.c **** }
- 191:main.c ****
- 192:main.c **** inline void monome_setup_system(){
- 143 .LM0:
- 144 .LFBB1:
- 145 /* prologue: frame size=0 */
- 146 /* prologue end (size=0) */
- 193:main.c **** int i;
- 194:main.c **** state = SYNC;
- 148 .LM1:
- 149 0000 81E0 ldi r24,lo8(1)
- 150 0002 8093 0000 sts state,r24
- 195:main.c **** num_players = 0;
- 152 .LM2:
- 153 0006 1092 0000 sts num_players,__zero_reg__
- 154 000a 20E0 ldi r18,lo8(0)
- 155 000c 30E0 ldi r19,hi8(0)
- 156 .L2:
- 196:main.c **** for(i = 0; i < MAX_NUM_PLAYERS; i++){
- 197:main.c **** player_rx[i] = -1;
- 158 .LM3:
- 159 000e F901 movw r30,r18
- 160 0010 E050 subi r30,lo8(-(player_rx))
- 161 0012 F040 sbci r31,hi8(-(player_rx))
- 162 0014 8FEF ldi r24,lo8(-1)
- 163 0016 8083 st Z,r24
- 198:main.c **** player_tx[i] = -1;
- 165 .LM4:
- 166 0018 F901 movw r30,r18
- 167 001a E050 subi r30,lo8(-(player_tx))
- 168 001c F040 sbci r31,hi8(-(player_tx))
- 169 001e 8083 st Z,r24
- 171 .LM5:
- 172 0020 2F5F subi r18,lo8(-(1))
- 173 0022 3F4F sbci r19,hi8(-(1))
- 174 0024 2430 cpi r18,4
- 175 0026 3105 cpc r19,__zero_reg__
- 176 0028 01F4 brne .L2
- 177 /* epilogue: frame size=0 */
- 178 002a 0895 ret
- 179 /* epilogue end (size=1) */
- 180 /* function monome_setup_system size 22 (21) */
- 185 .Lscope1:
- 187 .stabd 78,0,0
- 188 .data
- 189 .LC0:
- 190 0000 706C 6179 .string "player number sent: %d\r\n"
- 190 6572 206E
- 190 756D 6265
- 190 7220 7365
- 190 6E74 3A20
- 191 .LC1:
- 192 0019 6164 6465 .string "added new player: player %d\r\n"
- 192 6420 6E65
- 192 7720 706C
- 192 6179 6572
- 192 3A20 706C
- 193 .text
- 196 .global monome_add_controller
- 198 monome_add_controller:
- 199 .stabd 46,0,0
- 199:main.c **** }
- 200:main.c ****
- 201:main.c **** }
- 202:main.c ****
- 203:main.c **** inline void monome_add_controller(uint8_t slot){
- 201 .LM6:
- 202 .LFBB2:
- 203 /* prologue: frame size=0 */
- 204 /* prologue end (size=0) */
- 205 002c 982F mov r25,r24
- 204:main.c **** int i, already_player;
- 205:main.c **** already_player = 0;
- 206:main.c **** for(i = 0; i<num_players; i++){
- 207 .LM7:
- 208 002e 8091 0000 lds r24,num_players
- 209 0032 A82F mov r26,r24
- 210 0034 BB27 clr r27
- 211 0036 E0E0 ldi r30,lo8(player_tx)
- 212 0038 F0E0 ldi r31,hi8(player_tx)
- 213 003a 40E0 ldi r20,lo8(0)
- 214 003c 50E0 ldi r21,hi8(0)
- 215 003e 9D01 movw r18,r26
- 216 0040 2E0F add r18,r30
- 217 0042 3F1F adc r19,r31
- 218 0044 00C0 rjmp .L8
- 219 .L9:
- 207:main.c **** if(slot == player_tx[i]){
- 221 .LM8:
- 222 0046 8081 ld r24,Z
- 223 0048 9817 cp r25,r24
- 224 004a 01F4 brne .L10
- 225 004c 41E0 ldi r20,lo8(1)
- 226 004e 50E0 ldi r21,hi8(1)
- 227 .L10:
- 228 0050 3196 adiw r30,1
- 229 .L8:
- 231 .LM9:
- 232 0052 E217 cp r30,r18
- 233 0054 F307 cpc r31,r19
- 234 0056 01F4 brne .L9
- 208:main.c **** already_player = 1;
- 209:main.c **** }
- 210:main.c **** }
- 211:main.c **** if(already_player == 0){
- 236 .LM10:
- 237 0058 452B or r20,r21
- 238 005a 01F0 breq .+2
- 239 005c 00C0 rjmp .L22
- 212:main.c **** /* consider code to add player back if player is
lost */
- 213:main.c **** switch(slot){
- 241 .LM11:
- 242 005e 9430 cpi r25,lo8(4)
- 243 0060 01F0 breq .L17
- 244 0062 9530 cpi r25,lo8(5)
- 245 0064 00F4 brsh .L20
- 246 0066 9230 cpi r25,lo8(2)
- 247 0068 01F4 brne .L23
- 248 006a 00C0 rjmp .L16
- 249 .L20:
- 250 006c 9630 cpi r25,lo8(6)
- 251 006e 01F0 breq .L18
- 252 0070 9830 cpi r25,lo8(8)
- 253 0072 01F4 brne .L23
- 254 0074 00C0 rjmp .L19
- 255 .L16:
- 214:main.c **** case C1_TX: player_tx[num_players] = C1_TX;
- 257 .LM12:
- 258 0076 FD01 movw r30,r26
- 259 0078 E050 subi r30,lo8(-(player_tx))
- 260 007a F040 sbci r31,hi8(-(player_tx))
- 261 007c 9083 st Z,r25
- 215:main.c **** player_rx[num_players] = C1_RX;
- 263 .LM13:
- 264 007e A050 subi r26,lo8(-(player_rx))
- 265 0080 B040 sbci r27,hi8(-(player_rx))
- 266 0082 85E0 ldi r24,lo8(5)
- 267 0084 00C0 rjmp .L26
- 268 .L17:
- 216:main.c **** break;
- 217:main.c **** case C2_TX: player_tx[num_players] = C2_TX;
- 270 .LM14:
- 271 0086 FD01 movw r30,r26
- 272 0088 E050 subi r30,lo8(-(player_tx))
- 273 008a F040 sbci r31,hi8(-(player_tx))
- 274 008c 9083 st Z,r25
- 218:main.c **** player_rx[num_players] = C2_RX;
- 276 .LM15:
- 277 008e A050 subi r26,lo8(-(player_rx))
- 278 0090 B040 sbci r27,hi8(-(player_rx))
- 279 0092 87E0 ldi r24,lo8(7)
- 280 0094 00C0 rjmp .L26
- 281 .L18:
- 219:main.c **** break;
- 220:main.c **** case C3_TX: player_tx[num_players] = C3_TX;
- 283 .LM16:
- 284 0096 FD01 movw r30,r26
- 285 0098 E050 subi r30,lo8(-(player_tx))
- 286 009a F040 sbci r31,hi8(-(player_tx))
- 287 009c 9083 st Z,r25
- 221:main.c **** player_rx[num_players] = C3_RX;
- 289 .LM17:
- 290 009e A050 subi r26,lo8(-(player_rx))
- 291 00a0 B040 sbci r27,hi8(-(player_rx))
- 292 00a2 89E0 ldi r24,lo8(9)
- 293 00a4 00C0 rjmp .L26
- 294 .L19:
- 222:main.c **** break;
- 223:main.c **** case C4_TX: player_tx[num_players] = C4_TX;
- 296 .LM18:
- 297 00a6 FD01 movw r30,r26
- 298 00a8 E050 subi r30,lo8(-(player_tx))
- 299 00aa F040 sbci r31,hi8(-(player_tx))
- 300 00ac 9083 st Z,r25
- 224:main.c **** player_rx[num_players] = C4_RX;
- 302 .LM19:
- 303 00ae A050 subi r26,lo8(-(player_rx))
- 304 00b0 B040 sbci r27,hi8(-(player_rx))
- 305 00b2 8BE0 ldi r24,lo8(11)
- 306 .L26:
- 307 00b4 8C93 st X,r24
- 308 .L23:
- 225:main.c **** break;
- 226:main.c **** default: break;
- 227:main.c **** }
- 228:main.c **** while(
rtl_tx_pkt_check(player_rx[num_players])!=0 );
- 310 .LM20:
- 311 00b6 E091 0000 lds r30,num_players
- 312 00ba FF27 clr r31
- 313 00bc E050 subi r30,lo8(-(player_rx))
- 314 00be F040 sbci r31,hi8(-(player_rx))
- 315 00c0 8081 ld r24,Z
- 316 00c2 0E94 0000 call rtl_tx_pkt_check
- 317 00c6 8823 tst r24
- 318 00c8 01F4 brne .L23
- 229:main.c **** sync_pkt.player = num_players;
- 320 .LM21:
- 321 00ca 8091 0000 lds r24,num_players
- 322 00ce 8093 0000 sts sync_pkt,r24
- 230:main.c **** printf("player number sent: %d\r\n",
sync_pkt.player);
+ 148:main.c **** }
+ 149:main.c ****
+ 150:main.c **** }
+ 151:main.c ****
+ 152:main.c ****
+ 153:main.c **** void
+ 154:main.c **** nrk_create_taskset()
+ 155:main.c **** {
+ 156:main.c ****
+ 157:main.c ****
+ 158:main.c **** TaskOne.task = Task1;
+ 159:main.c **** TaskOne.Ptos = (void *)
&Stack1[NRK_APP_STACKSIZE-1];
+ 160:main.c **** TaskOne.Pbos = (void *) &Stack1[0];
+ 161:main.c **** TaskOne.prio = 2;
+ 162:main.c **** TaskOne.FirstActivation = TRUE;
+ 163:main.c **** TaskOne.Type = BASIC_TASK;
+ 164:main.c **** TaskOne.SchType = PREEMPTIVE;
+ 165:main.c **** TaskOne.period.secs = 1;
+ 166:main.c **** TaskOne.period.nano_secs = 0;
+ 167:main.c **** TaskOne.cpu_reserve.secs = 0;
+ 168:main.c **** TaskOne.cpu_reserve.nano_secs = 100*NANOS_PER_MS;
+ 169:main.c **** TaskOne.offset.secs = 0;
+ 170:main.c **** TaskOne.offset.nano_secs= 0;
+ 171:main.c **** nrk_activate_task (&TaskOne);
+ 172:main.c ****
+ 173:main.c ****
+ 174:main.c **** printf ("Create done\r\n");
+ 175:main.c **** }
+ 176:main.c ****
+ 177:main.c **** inline void monome_comm_init(){
+ 178:main.c **** rtl_init (RTL_COORDINATOR);
+ 179:main.c ****
+ 180:main.c **** /* rx schedules */
+ 181:main.c **** rtl_set_schedule( RTL_RX, C1_TX, 1 );
+ 182:main.c **** rtl_set_schedule( RTL_RX, C2_TX, 1 );
+ 183:main.c **** rtl_set_schedule( RTL_RX, C3_TX, 1 );
+ 184:main.c **** rtl_set_schedule( RTL_RX, C4_TX, 1 );
+ 185:main.c ****
+ 186:main.c **** /* tx schedules */
+ 187:main.c **** rtl_set_schedule( RTL_TX, ALL_RX, 1 );
+ 188:main.c **** rtl_set_schedule( RTL_TX, C1_RX, 1 );
+ 189:main.c **** rtl_set_schedule( RTL_TX, C2_RX, 1 );
+ 190:main.c **** rtl_set_schedule( RTL_TX, C3_RX, 1 );
+ 191:main.c **** rtl_set_schedule( RTL_TX, C4_RX, 1 );
+ 192:main.c ****
+ 193:main.c **** rtl_start();
+ 194:main.c **** rtl_rx_pkt_set_buffer(rx_buf,
RF_MAX_PAYLOAD_SIZE);
+ 195:main.c **** }
+ 196:main.c ****
+ 197:main.c **** inline void monome_setup_system(){
+ 148 .LM0:
+ 149 .LFBB1:
+ 150 /* prologue: function */
+ 151 /* frame size = 0 */
+ 198:main.c **** int i;
+ 199:main.c **** state = SYNC;
+ 153 .LM1:
+ 154 0000 81E0 ldi r24,lo8(1)
+ 155 0002 8093 0000 sts state,r24
+ 200:main.c **** num_players = 0;
+ 157 .LM2:
+ 158 0006 1092 0000 sts num_players,__zero_reg__
+ 159 000a 80E0 ldi r24,lo8(0)
+ 160 000c 90E0 ldi r25,hi8(0)
+ 201:main.c **** for(i = 0; i < MAX_NUM_PLAYERS; i++){
+ 202:main.c **** player_rx[i] = -1;
+ 162 .LM3:
+ 163 000e 2FEF ldi r18,lo8(-1)
+ 164 .L2:
+ 165 0010 FC01 movw r30,r24
+ 166 0012 E050 subi r30,lo8(-(player_rx))
+ 167 0014 F040 sbci r31,hi8(-(player_rx))
+ 168 0016 2083 st Z,r18
+ 203:main.c **** player_tx[i] = -1;
+ 170 .LM4:
+ 171 0018 FC01 movw r30,r24
+ 172 001a E050 subi r30,lo8(-(player_tx))
+ 173 001c F040 sbci r31,hi8(-(player_tx))
+ 174 001e 2083 st Z,r18
+ 202:main.c **** for(i = 0; i < MAX_NUM_PLAYERS; i++){
+ 176 .LM5:
+ 177 0020 0196 adiw r24,1
+ 178 0022 8430 cpi r24,4
+ 179 0024 9105 cpc r25,__zero_reg__
+ 180 0026 01F4 brne .L2
+ 181 /* epilogue start */
+ 204:main.c **** }
+ 205:main.c ****
+ 206:main.c **** }
+ 183 .LM6:
+ 184 0028 0895 ret
+ 189 .Lscope1:
+ 191 .stabd 78,0,0
+ 192 .data
+ 193 .LC0:
+ 194 0000 706C 6179 .string "player number sent: %d\r\n"
+ 194 6572 206E
+ 194 756D 6265
+ 194 7220 7365
+ 194 6E74 3A20
+ 195 .LC1:
+ 196 0019 6164 6465 .string "added new player: player %d\r\n"
+ 196 6420 6E65
+ 196 7720 706C
+ 196 6179 6572
+ 196 3A20 706C
+ 197 .text
+ 200 .global monome_add_controller
+ 202 monome_add_controller:
+ 203 .stabd 46,0,0
+ 207:main.c ****
+ 208:main.c **** inline void monome_add_controller(uint8_t slot){
+ 205 .LM7:
+ 206 .LFBB2:
+ 207 /* prologue: function */
+ 208 /* frame size = 0 */
+ 209 002a 982F mov r25,r24
+ 209:main.c **** int i, already_player;
+ 210:main.c **** already_player = 0;
+ 211:main.c **** for(i = 0; i<num_players; i++){
+ 211 .LM8:
+ 212 002c 8091 0000 lds r24,num_players
+ 213 0030 A82F mov r26,r24
+ 214 0032 B0E0 ldi r27,lo8(0)
+ 215 0034 E0E0 ldi r30,lo8(player_tx)
+ 216 0036 F0E0 ldi r31,hi8(player_tx)
+ 217 0038 20E0 ldi r18,lo8(0)
+ 218 003a 30E0 ldi r19,hi8(0)
+ 219 003c AD01 movw r20,r26
+ 220 003e 4E0F add r20,r30
+ 221 0040 5F1F adc r21,r31
+ 222 0042 00C0 rjmp .L6
+ 223 .L8:
+ 212:main.c **** if(slot == player_tx[i]){
+ 225 .LM9:
+ 226 0044 8081 ld r24,Z
+ 227 0046 9817 cp r25,r24
+ 228 0048 01F4 brne .L7
+ 229 004a 21E0 ldi r18,lo8(1)
+ 230 004c 30E0 ldi r19,hi8(1)
+ 231 .L7:
+ 232 004e 3196 adiw r30,1
+ 233 .L6:
+ 212:main.c **** if(slot == player_tx[i]){
+ 235 .LM10:
+ 236 0050 E417 cp r30,r20
+ 237 0052 F507 cpc r31,r21
+ 238 0054 01F4 brne .L8
+ 213:main.c **** already_player = 1;
+ 214:main.c **** }
+ 215:main.c **** }
+ 216:main.c **** if(already_player == 0){
+ 240 .LM11:
+ 241 0056 232B or r18,r19
+ 242 0058 01F0 breq .+2
+ 243 005a 00C0 rjmp .L16
+ 217:main.c **** /* consider code to add player back if player is
lost */
+ 218:main.c **** switch(slot){
+ 245 .LM12:
+ 246 005c 9430 cpi r25,lo8(4)
+ 247 005e 01F0 breq .L12
+ 248 0060 9530 cpi r25,lo8(5)
+ 249 0062 00F4 brsh .L15
+ 250 0064 9230 cpi r25,lo8(2)
+ 251 0066 01F4 brne .L17
+ 252 0068 00C0 rjmp .L20
+ 253 .L15:
+ 254 006a 9630 cpi r25,lo8(6)
+ 255 006c 01F0 breq .L13
+ 256 006e 9830 cpi r25,lo8(8)
+ 257 0070 01F4 brne .L17
+ 258 0072 00C0 rjmp .L21
+ 259 .L20:
+ 219:main.c **** case C1_TX: player_tx[num_players] = C1_TX;
+ 261 .LM13:
+ 262 0074 FD01 movw r30,r26
+ 263 0076 E050 subi r30,lo8(-(player_tx))
+ 264 0078 F040 sbci r31,hi8(-(player_tx))
+ 265 007a 9083 st Z,r25
+ 220:main.c **** player_rx[num_players] = C1_RX;
+ 267 .LM14:
+ 268 007c A050 subi r26,lo8(-(player_rx))
+ 269 007e B040 sbci r27,hi8(-(player_rx))
+ 270 0080 85E0 ldi r24,lo8(5)
+ 271 0082 00C0 rjmp .L19
+ 272 .L12:
+ 221:main.c **** break;
+ 222:main.c **** case C2_TX: player_tx[num_players] = C2_TX;
+ 274 .LM15:
+ 275 0084 FD01 movw r30,r26
+ 276 0086 E050 subi r30,lo8(-(player_tx))
+ 277 0088 F040 sbci r31,hi8(-(player_tx))
+ 278 008a 9083 st Z,r25
+ 223:main.c **** player_rx[num_players] = C2_RX;
+ 280 .LM16:
+ 281 008c A050 subi r26,lo8(-(player_rx))
+ 282 008e B040 sbci r27,hi8(-(player_rx))
+ 283 0090 87E0 ldi r24,lo8(7)
+ 284 0092 00C0 rjmp .L19
+ 285 .L13:
+ 224:main.c **** break;
+ 225:main.c **** case C3_TX: player_tx[num_players] = C3_TX;
+ 287 .LM17:
+ 288 0094 FD01 movw r30,r26
+ 289 0096 E050 subi r30,lo8(-(player_tx))
+ 290 0098 F040 sbci r31,hi8(-(player_tx))
+ 291 009a 9083 st Z,r25
+ 226:main.c **** player_rx[num_players] = C3_RX;
+ 293 .LM18:
+ 294 009c A050 subi r26,lo8(-(player_rx))
+ 295 009e B040 sbci r27,hi8(-(player_rx))
+ 296 00a0 89E0 ldi r24,lo8(9)
+ 297 00a2 00C0 rjmp .L19
+ 298 .L21:
+ 227:main.c **** break;
+ 228:main.c **** case C4_TX: player_tx[num_players] = C4_TX;
+ 300 .LM19:
+ 301 00a4 FD01 movw r30,r26
+ 302 00a6 E050 subi r30,lo8(-(player_tx))
+ 303 00a8 F040 sbci r31,hi8(-(player_tx))
+ 304 00aa 9083 st Z,r25
+ 229:main.c **** player_rx[num_players] = C4_RX;
+ 306 .LM20:
+ 307 00ac A050 subi r26,lo8(-(player_rx))
+ 308 00ae B040 sbci r27,hi8(-(player_rx))
+ 309 00b0 8BE0 ldi r24,lo8(11)
+ 310 .L19:
+ 311 00b2 8C93 st X,r24
+ 312 .L17:
+ 230:main.c **** break;
+ 231:main.c **** default: break;
+ 232:main.c **** }
+ 233:main.c **** while(
rtl_tx_pkt_check(player_rx[num_players])!=0 );
+ 314 .LM21:
+ 315 00b4 E091 0000 lds r30,num_players
+ 316 00b8 F0E0 ldi r31,lo8(0)
+ 317 00ba E050 subi r30,lo8(-(player_rx))
+ 318 00bc F040 sbci r31,hi8(-(player_rx))
+ 319 00be 8081 ld r24,Z
+ 320 00c0 0E94 0000 call rtl_tx_pkt_check
+ 321 00c4 8823 tst r24
+ 322 00c6 01F4 brne .L17
+ 234:main.c **** sync_pkt.player = num_players;
324 .LM22:
- 325 00d2 9927 clr r25
- 326 00d4 9F93 push r25
- 327 00d6 8F93 push r24
- 328 00d8 80E0 ldi r24,lo8(.LC0)
- 329 00da 90E0 ldi r25,hi8(.LC0)
- 330 00dc 9F93 push r25
- 331 00de 8F93 push r24
- 332 00e0 0E94 0000 call printf
- 231:main.c **** memcpy(&tx_buf[PKT_DATA_START], &sync_pkt,
sizeof(monome_comm_sync_pkt));
- 334 .LM23:
- 335 00e4 8091 0000 lds r24,sync_pkt
- 336 00e8 8093 0000 sts tx_buf+3,r24
- 232:main.c **** tx_len = type(monome_comm_sync_pkt);
- 338 .LM24:
- 339 00ec 84E0 ldi r24,lo8(4)
- 340 00ee 8093 0000 sts tx_len,r24
- 233:main.c **** rtl_tx_pkt( tx_buf, tx_len,
player_rx[num_players]);
- 342 .LM25:
- 343 00f2 E091 0000 lds r30,num_players
- 344 00f6 FF27 clr r31
- 345 00f8 E050 subi r30,lo8(-(player_rx))
- 346 00fa F040 sbci r31,hi8(-(player_rx))
- 347 00fc 4081 ld r20,Z
- 348 00fe 64E0 ldi r22,lo8(4)
- 349 0100 80E0 ldi r24,lo8(tx_buf)
- 350 0102 90E0 ldi r25,hi8(tx_buf)
- 351 0104 0E94 0000 call rtl_tx_pkt
- 234:main.c **** rtl_wait_until_tx_done(player_rx[num_players]);
- 353 .LM26:
- 354 0108 E091 0000 lds r30,num_players
- 355 010c FF27 clr r31
- 356 010e E050 subi r30,lo8(-(player_rx))
- 357 0110 F040 sbci r31,hi8(-(player_rx))
- 358 0112 8081 ld r24,Z
- 359 0114 0E94 0000 call rtl_wait_until_tx_done
- 235:main.c **** num_players++;
- 361 .LM27:
- 362 0118 8091 0000 lds r24,num_players
- 363 011c 8F5F subi r24,lo8(-(1))
- 364 011e 8093 0000 sts num_players,r24
- 236:main.c **** printf("added new player: player %d\r\n",
num_players);
- 366 .LM28:
- 367 0122 9927 clr r25
- 368 0124 9F93 push r25
- 369 0126 8F93 push r24
- 370 0128 80E0 ldi r24,lo8(.LC1)
- 371 012a 90E0 ldi r25,hi8(.LC1)
- 372 012c 9F93 push r25
- 373 012e 8F93 push r24
- 374 0130 0E94 0000 call printf
- 375 0134 8DB7 in r24,__SP_L__
- 376 0136 9EB7 in r25,__SP_H__
- 377 0138 0896 adiw r24,8
- 378 013a 0FB6 in __tmp_reg__,__SREG__
- 379 013c F894 cli
- 380 013e 9EBF out __SP_H__,r25
- 381 0140 0FBE out __SREG__,__tmp_reg__
- 382 0142 8DBF out __SP_L__,r24
- 383 .L22:
- 384 0144 0895 ret
- 385 /* epilogue: frame size=0 */
- 386 /* epilogue: noreturn */
- 387 /* epilogue end (size=0) */
- 388 /* function monome_add_controller size 141 (141) */
- 393 .Lscope2:
- 395 .stabd 78,0,0
- 397 .global monome_comm_init
- 399 monome_comm_init:
- 400 .stabd 46,0,0
- 402 .LM29:
- 403 .LFBB3:
- 404 /* prologue: frame size=0 */
- 405 /* prologue end (size=0) */
- 407 .LM30:
- 408 0146 82E0 ldi r24,lo8(2)
- 409 0148 0E94 0000 call rtl_init
- 411 .LM31:
- 412 014c 41E0 ldi r20,lo8(1)
- 413 014e 62E0 ldi r22,lo8(2)
- 414 0150 80E0 ldi r24,lo8(0)
- 415 0152 0E94 0000 call rtl_set_schedule
- 417 .LM32:
- 418 0156 41E0 ldi r20,lo8(1)
- 419 0158 64E0 ldi r22,lo8(4)
- 420 015a 80E0 ldi r24,lo8(0)
- 421 015c 0E94 0000 call rtl_set_schedule
- 423 .LM33:
- 424 0160 41E0 ldi r20,lo8(1)
- 425 0162 66E0 ldi r22,lo8(6)
- 426 0164 80E0 ldi r24,lo8(0)
- 427 0166 0E94 0000 call rtl_set_schedule
- 429 .LM34:
- 430 016a 41E0 ldi r20,lo8(1)
- 431 016c 68E0 ldi r22,lo8(8)
- 432 016e 80E0 ldi r24,lo8(0)
- 433 0170 0E94 0000 call rtl_set_schedule
- 435 .LM35:
- 436 0174 41E0 ldi r20,lo8(1)
- 437 0176 63E0 ldi r22,lo8(3)
- 438 0178 81E0 ldi r24,lo8(1)
- 439 017a 0E94 0000 call rtl_set_schedule
- 441 .LM36:
- 442 017e 41E0 ldi r20,lo8(1)
- 443 0180 65E0 ldi r22,lo8(5)
- 444 0182 81E0 ldi r24,lo8(1)
- 445 0184 0E94 0000 call rtl_set_schedule
- 447 .LM37:
- 448 0188 41E0 ldi r20,lo8(1)
- 449 018a 67E0 ldi r22,lo8(7)
- 450 018c 81E0 ldi r24,lo8(1)
- 451 018e 0E94 0000 call rtl_set_schedule
- 453 .LM38:
- 454 0192 41E0 ldi r20,lo8(1)
- 455 0194 69E0 ldi r22,lo8(9)
- 456 0196 81E0 ldi r24,lo8(1)
- 457 0198 0E94 0000 call rtl_set_schedule
- 459 .LM39:
- 460 019c 41E0 ldi r20,lo8(1)
- 461 019e 6BE0 ldi r22,lo8(11)
- 462 01a0 81E0 ldi r24,lo8(1)
- 463 01a2 0E94 0000 call rtl_set_schedule
- 465 .LM40:
- 466 01a6 0E94 0000 call rtl_start
- 468 .LM41:
- 469 01aa 64E7 ldi r22,lo8(116)
- 470 01ac 80E0 ldi r24,lo8(rx_buf)
- 471 01ae 90E0 ldi r25,hi8(rx_buf)
- 472 01b0 0E94 0000 call rtl_rx_pkt_set_buffer
- 473 /* epilogue: frame size=0 */
- 474 01b4 0895 ret
- 475 /* epilogue end (size=1) */
- 476 /* function monome_comm_init size 56 (55) */
- 478 .Lscope3:
- 480 .stabd 78,0,0
- 481 .data
- 482 .LC2:
- 483 0037 4372 6561 .string "Create done\r"
- 483 7465 2064
- 483 6F6E 650D
- 483 00
- 484 .text
- 486 .global nrk_create_taskset
- 488 nrk_create_taskset:
- 489 .stabd 46,0,0
- 491 .LM42:
- 492 .LFBB4:
- 493 /* prologue: frame size=0 */
- 494 /* prologue end (size=0) */
- 496 .LM43:
- 497 01b6 80E0 ldi r24,lo8(pm(Task1))
- 498 01b8 90E0 ldi r25,hi8(pm(Task1))
- 499 01ba 9093 0000 sts (TaskOne+5)+1,r25
- 500 01be 8093 0000 sts TaskOne+5,r24
- 502 .LM44:
- 503 01c2 80E0 ldi r24,lo8(Stack1+127)
- 504 01c4 90E0 ldi r25,hi8(Stack1+127)
- 505 01c6 9093 0000 sts (TaskOne+1)+1,r25
- 506 01ca 8093 0000 sts TaskOne+1,r24
- 508 .LM45:
- 509 01ce 80E0 ldi r24,lo8(Stack1)
- 510 01d0 90E0 ldi r25,hi8(Stack1)
- 511 01d2 9093 0000 sts (TaskOne+3)+1,r25
- 512 01d6 8093 0000 sts TaskOne+3,r24
- 514 .LM46:
- 515 01da 82E0 ldi r24,lo8(2)
- 516 01dc 8093 0000 sts TaskOne+8,r24
- 518 .LM47:
- 519 01e0 81E0 ldi r24,lo8(1)
- 520 01e2 8093 0000 sts TaskOne+7,r24
- 522 .LM48:
- 523 01e6 8093 0000 sts TaskOne+9,r24
- 525 .LM49:
- 526 01ea 8093 0000 sts TaskOne+10,r24
- 528 .LM50:
- 529 01ee 81E0 ldi r24,lo8(1)
- 530 01f0 90E0 ldi r25,hi8(1)
- 531 01f2 A0E0 ldi r26,hlo8(1)
- 532 01f4 B0E0 ldi r27,hhi8(1)
- 533 01f6 8093 0000 sts TaskOne+11,r24
- 534 01fa 9093 0000 sts (TaskOne+11)+1,r25
- 535 01fe A093 0000 sts (TaskOne+11)+2,r26
- 536 0202 B093 0000 sts (TaskOne+11)+3,r27
- 538 .LM51:
- 539 0206 1092 0000 sts TaskOne+15,__zero_reg__
- 540 020a 1092 0000 sts (TaskOne+15)+1,__zero_reg__
- 541 020e 1092 0000 sts (TaskOne+15)+2,__zero_reg__
- 542 0212 1092 0000 sts (TaskOne+15)+3,__zero_reg__
+ 325 00c8 2091 0000 lds r18,num_players
+ 326 00cc 2093 0000 sts sync_pkt,r18
+ 235:main.c **** printf("player number sent: %d\r\n",
sync_pkt.player);
+ 328 .LM23:
+ 329 00d0 00D0 rcall .
+ 330 00d2 00D0 rcall .
+ 331 00d4 EDB7 in r30,__SP_L__
+ 332 00d6 FEB7 in r31,__SP_H__
+ 333 00d8 3196 adiw r30,1
+ 334 00da 80E0 ldi r24,lo8(.LC0)
+ 335 00dc 90E0 ldi r25,hi8(.LC0)
+ 336 00de ADB7 in r26,__SP_L__
+ 337 00e0 BEB7 in r27,__SP_H__
+ 338 00e2 1296 adiw r26,1+1
+ 339 00e4 9C93 st X,r25
+ 340 00e6 8E93 st -X,r24
+ 341 00e8 1197 sbiw r26,1
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/monome/controller_base_comm/base_station/main.map Sat Dec 11
12:36:09 2010
+++ /trunk/monome/controller_base_comm/base_station/main.map Tue Dec 21
13:38:34 2010
@@ -1,45 +1,47 @@
Archive member included because of file (symbol)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libprintf_min.a(vfprintf_min.o)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libprintf_min.a(vfprintf_min.o)
(vfprintf)
-/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_mulsi3.o)
+/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_mulsi3.o)
../../../../../src/net/rt_link/rt_link.o
(__mulsi3)
-/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_udivmodhi4.o)
+/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_udivmodhi4.o)
../../../../../src/kernel/source/nrk_scheduler.o
(__udivmodhi4)
-/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_divmodhi4.o)
+/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_divmodhi4.o)
../../../../../src/net/rt_link/rt_link.o
(__divmodhi4)
-/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_udivmodsi4.o)
+/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_udivmodsi4.o)
../../../../../src/net/rt_link/rt_link.o
(__udivmodsi4)
-/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_exit.o)
-
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/crtm1281.o (exit)
-/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_clear_bss.o)
+/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_exit.o)
+
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/crtm1281.o (exit)
+/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_clear_bss.o)
main.o (__do_clear_bss)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(rand.o)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(rand.o)
../../../../../src/net/rt_link/rt_link.o
(rand)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(strlen_P.o)
-
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libprintf_min.a(vfprintf_min.o)
(strlen_P)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(fdevopen.o)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(strchr_P.o)
+
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libprintf_min.a(vfprintf_min.o)
(strchr_P)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(fdevopen.o)
../../../../../src/platform/firefly2_2/source/ulib.o
(fdevopen)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(fputc.o)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(fputc.o)
../../../../../src/platform/firefly2_2/source/ulib.o
(fputc)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(iob.o)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(iob.o)
../../../../../src/platform/firefly2_2/source/ulib.o
(__iob)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(printf.o)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(printf.o)
main.o (printf)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(puts.o)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(puts.o)
main.o (puts)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(ee_rb.1F2021.o)
- ../../../../../src/platform/firefly2_2/source/nrk_eeprom.o
(__eeprom_read_byte_1F2021)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(ee_wb.1F2021.o)
- ../../../../../src/platform/firefly2_2/source/nrk_eeprom.o
(__eeprom_write_byte_1F2021)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(calloc.o)
-
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(fdevopen.o)
(calloc)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(malloc.o)
-
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(calloc.o)
(malloc)
-/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(memset.o)
-
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(calloc.o)
(memset)
-/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_divmodsi4.o)
-
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(rand.o)
(__divmodsi4)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(ultoa_invert.o)
+
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libprintf_min.a(vfprintf_min.o)
(__ultoa_invert)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(eerd_byte_atmega1281.o)
+ ../../../../../src/platform/firefly2_2/source/nrk_eeprom.o
(__eerd_byte_m1281)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(eewr_byte_atmega1281.o)
+ ../../../../../src/platform/firefly2_2/source/nrk_eeprom.o
(__eewr_byte_m1281)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(calloc.o)
+
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(fdevopen.o) (calloc)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(malloc.o)
+
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(calloc.o) (malloc)
+/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(memset.o)
+
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(calloc.o) (memset)
+/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_divmodsi4.o)
+
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(rand.o) (__divmodsi4)
Allocating common symbols
Common symbol size file
@@ -82,7 +84,7 @@
ext_int2_callback
0x2 ../../../../../src/kernel/hal/atmega1281/nrk_ext_int.o
TaskOne 0x23 main.o
_dbg_index
0x1 ../../../../../src/net/rt_link/rt_link.o
-__brkval 0x2
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(malloc.o)
+__brkval 0x2
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(malloc.o)
nrk_wakeup_signal
0x1 ../../../../../src/kernel/source/nrk.o
state 0x1 main.o
rtl_tsync_tx 0x7 main.o
@@ -134,13 +136,13 @@
_nrk_prev_timer_val
0x1 ../../../../../src/net/rt_link/rt_link.o
rtl_rfTxInfo 0x7 main.o
-__flp 0x2
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(malloc.o)
+__flp 0x2
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(malloc.o)
error_num 0x1 main.o
rtl_sched
0x10 ../../../../../src/net/rt_link/rt_link.o
tx_len 0x1 main.o
_nrk_readyQ
0x14 ../../../../../src/kernel/source/nrk.o
rtl_sched_cache
0x20 ../../../../../src/net/rt_link/rt_link.o
-__iob 0x6
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(iob.o)
+__iob 0x6
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(iob.o)
last_slot 0x2 main.o
rx_ready
0x1 ../../../../../src/radio/cc2420/source/basic_rf.o
rtl_rx_buf 0x74 main.o
@@ -151,48 +153,21 @@
rtl_tx_info 0x63 main.o
rtl_tsync_buf 0x3 main.o
-Discarded input sections
-
- .stabstr 0x00000000 0x0 main.o
- .stabstr 0x00000000
0x0 ../../../../../src/net/rt_link/rt_link.o
- .stabstr 0x00000000
0x0 ../../../../../src/net/rt_link/rtl_scheduler.o
- .stabstr 0x00000000
0x0 ../../../../../src/net/rt_link/rtl_debug.o
- .stabstr 0x00000000
0x0 ../../../../../src/radio/cc2420/source/hal_rf_set_channel.o
- .stabstr 0x00000000
0x0 ../../../../../src/radio/cc2420/source/hal_rf_wait_for_crystal_oscillator.o
- .stabstr 0x00000000
0x0 ../../../../../src/radio/cc2420/source/basic_rf.o
- .stabstr 0x00000000
0x0 ../../../../../src/platform/firefly2_2/source/ulib.o
- .stabstr 0x00000000
0x0 ../../../../../src/platform/firefly2_2/source/hal_wait.o
- .stabstr 0x00000000
0x0 ../../../../../src/platform/firefly2_2/source/nrk_eeprom.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk_stats.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk_error.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk_stack_check.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk_events.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk_task.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk_time.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk_idle_task.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk_scheduler.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk_driver.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/source/nrk_reserve.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/hal/atmega1281/nrk_timer.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/hal/atmega1281/nrk_ext_int.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/hal/atmega1281/nrk_status.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/hal/atmega1281/nrk_watchdog.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/hal/atmega1281/nrk_cpu.o
- .stabstr 0x00000000
0x0 ../../../../../src/kernel/hal/atmega1281/atmel_hw_specific.o
-
Memory Configuration
Name Origin Length Attributes
text 0x00000000 0x00020000 xr
data 0x00800060 0x0000ffa0 rw !x
eeprom 0x00810000 0x00010000 rw !x
+fuse 0x00820000 0x00000400 rw !x
+lock 0x00830000 0x00000400 rw !x
+signature 0x00840000 0x00000400 rw !x
*default* 0x00000000 0xffffffff
Linker script and memory map
Address of section .data set to 0x800200
-LOAD /sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/crtm1281.o
+LOAD /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/crtm1281.o
LOAD main.o
LOAD ../../../../../src/net/rt_link/rt_link.o
LOAD ../../../../../src/net/rt_link/rtl_scheduler.o
@@ -220,11 +195,11 @@
LOAD ../../../../../src/kernel/hal/atmega1281/nrk_watchdog.o
LOAD ../../../../../src/kernel/hal/atmega1281/nrk_cpu.o
LOAD ../../../../../src/kernel/hal/atmega1281/atmel_hw_specific.o
-LOAD
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libprintf_min.a
-LOAD /sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libm.a
-LOAD /sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a
-LOAD /sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a
-LOAD /sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a
+LOAD /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libprintf_min.a
+LOAD /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libm.a
+LOAD /usr/lib/gcc/avr/4.3.4/avr51/libgcc.a
+LOAD /usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a
+LOAD /usr/lib/gcc/avr/4.3.4/avr51/libgcc.a
.hash
*(.hash)
@@ -316,19 +291,11 @@
.rela.plt
*(.rela.plt)
-.text 0x00000000 0x69ba
+.text 0x00000000 0x67ea
*(.vectors)
- .vectors 0x00000000 0xcc
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/crtm1281.o
+ .vectors 0x00000000 0xcc
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/crtm1281.o
0x00000000 __vectors
*(.vectors)
- 0x000000cc __ctors_start = .
- *(.ctors)
- 0x000000cc __ctors_end = .
- 0x000000cc __dtors_start = .
- *(.dtors)
- 0x000000cc __dtors_end = .
- SORT(*)(.ctors)
- SORT(*)(.dtors)
*(.progmem.gcc*)
.progmem.gcc_sw_table
0x000000cc
0x24 ../../../../../src/kernel/source/nrk_error.o
@@ -336,28 +303,41 @@
.progmem.data 0x000000f0
0x56 ../../../../../src/net/rt_link/rt_link.o
.progmem.data 0x00000146
0x1c8 ../../../../../src/kernel/source/nrk_error.o
.progmem.data 0x0000030e
0xf ../../../../../src/kernel/source/nrk_stack_check.o
- 0x0000031e . = ALIGN (0x2)
- *fill* 0x0000031d 0x1 00
+ .progmem.data 0x0000031d 0x17
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libprintf_min.a(vfprintf_min.o)
+ 0x00000334 . = ALIGN (0x2)
+ 0x00000334 __trampolines_start = .
+ *(.trampolines)
+ .trampolines 0x00000334 0x0 linker stubs
+ *(.trampolines*)
+ 0x00000334 __trampolines_end = .
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
+ 0x00000334 __ctors_start = .
+ *(.ctors)
+ 0x00000334 __ctors_end = .
+ 0x00000334 __dtors_start = .
+ *(.dtors)
+ 0x00000334 __dtors_end = .
+ SORT(*)(.ctors)
+ SORT(*)(.dtors)
*(.init0)
- .init0 0x0000031e 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/crtm1281.o
- 0x0000031e __init
+ .init0 0x00000334 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/crtm1281.o
+ 0x00000334 __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
- .init2 0x0000031e 0xc
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/crtm1281.o
+ .init2 0x00000334 0xc
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/crtm1281.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
- .init4 0x0000032a 0x1a
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/crtm1281.o
- 0x0000032a __do_copy_data
- .init4 0x00000344 0x10
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_clear_bss.o)
- 0x00000344 __do_clear_bss
+ .init4 0x00000340 0x1a
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/crtm1281.o
+ 0x00000340 __do_copy_data
+ .init4 0x0000035a 0x10
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_clear_bss.o)
+ 0x0000035a __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
@@ -368,367 +348,394 @@
*(.init8)
*(.init8)
*(.init9)
- .init9 0x00000354 0x8
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/crtm1281.o
+ .init9 0x0000036a 0x8
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/crtm1281.o
*(.init9)
*(.text)
- .text 0x0000035c 0x4
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/crtm1281.o
- 0x0000035c __vector_38
- 0x0000035c __vector_22
- 0x0000035c __vector_28
- 0x0000035c __vector_34
- 0x0000035c __vector_24
- 0x0000035c __vector_12
- 0x0000035c __vector_46
- 0x0000035c __bad_interrupt
- 0x0000035c __vector_6
- 0x0000035c __vector_31
- 0x0000035c __vector_35
- 0x0000035c __vector_39
- 0x0000035c __vector_3
- 0x0000035c __vector_23
- 0x0000035c __vector_30
- 0x0000035c __vector_45
- 0x0000035c __vector_25
- 0x0000035c __vector_11
- 0x0000035c __vector_19
- 0x0000035c __vector_7
- 0x0000035c __vector_49
- 0x0000035c __vector_41
- 0x0000035c __vector_43
- 0x0000035c __vector_27
- 0x0000035c __vector_5
- 0x0000035c __vector_33
- 0x0000035c __vector_47
- 0x0000035c __vector_37
- 0x0000035c __vector_4
- 0x0000035c __vector_44
- 0x0000035c __vector_21
- 0x0000035c __vector_36
- 0x0000035c __vector_29
- 0x0000035c __vector_40
- 0x0000035c __vector_8
- 0x0000035c __vector_26
- 0x0000035c __vector_48
- 0x0000035c __vector_14
- 0x0000035c __vector_10
- 0x0000035c __vector_50
- 0x0000035c __vector_16
- 0x0000035c __vector_18
- 0x0000035c __vector_20
- 0x0000035c __vector_42
- .text 0x00000360 0x3b6 main.o
- 0x000004a6 monome_comm_init
- 0x000005d0 Task1
- 0x0000038c monome_add_controller
- 0x00000516 nrk_create_taskset
- 0x000006ae main
- 0x00000360 monome_setup_system
- .text 0x00000716
0xe96 ../../../../../src/net/rt_link/rt_link.o
- 0x00000792 rtl_set_cycle_callback
- 0x000014c8 rtl_wait_until_tx_done
- 0x00000742 rtl_check_abs_tx_status
- 0x00001476 rtl_wait_until_rx_or_tx
- 0x00000c90 rtl_tx_abs_pkt
- 0x00000730 rtl_get_slot
- 0x0000088e rtl_start
- 0x000007b0 rtl_set_tx_callback
- 0x00000750 rtl_tx_pkt_check
- 0x000007e4 rtl_task_config
- 0x0000071c rtl_ready
- 0x000007ba rtl_set_abs_callback
- 0x00000716 rtl_wait_until_global_slot
- 0x00000f76 rtl_set_channel
- 0x00000d06 _rtl_rx_sync
- 0x00001592 rtl_get_tx_done_signal
- 0x000008ce rtl_set_contention
- 0x00001506 rtl_wait_until_rx_pkt
- 0x00000916 rtl_init
- 0x00001578 rtl_get_rx_pkt_signal
- 0x0000079c rtl_set_slot_callback
- 0x000007a6 rtl_set_rx_callback
- 0x0000073a rtl_sync_status
- 0x00000a50 rtl_set_tx_power
- 0x00000a56 _rtl_tx
- 0x00000b78 _rtl_rx
- 0x000007c4 rtl_rx_pkt_set_buffer
- 0x0000074a rtl_rx_pkt_release
- 0x00000786 rtl_rx_pkt_check
- 0x0000153a rtl_rx_pkt_get
- 0x00000f80 rtl_tx_pkt
- 0x00001008 rtl_nw_task
- 0x00001398 rtl_get_global_slot
- .text 0x000015ac
0x442 ../../../../../src/net/rt_link/rtl_scheduler.o
- 0x00001904 _rtl_clear_sched_cache
- 0x000017f0 _rtl_clr_abs_wakeup
- 0x0000176e rtl_set_abs_wakeup
- 0x000015ac rtl_set_schedule
- 0x00001948 rtl_get_slots_until_next_wakeup
- 0x00001662 rtl_get_schedule
- 0x0000185a _rtl_match_abs_wakeup
- 0x00001914 _rtl_pow
- 0x0000169c rtl_clr_schedule
- 0x000018c2 _rtl_get_next_abs_wakeup
- 0x00001748 _rtl_clr_abs_all_wakeup
- .text 0x000019ee
0x1d8 ../../../../../src/net/rt_link/rtl_debug.o
- 0x00001b18 rtl_debug_get_tsync_delay
- 0x00001a5e rtl_debug_get_pkt_loss
- 0x000019ee rtl_debug_time_update
- 0x00001a0e rtl_debug_time_get_drift
- 0x00001a86 rtl_debug_get_tsync_loss
- 0x00001b30 rtl_debug_rx_tsync
- 0x00001a18 rtl_debug_init
- 0x00001a3a bit_count
- 0x00001a92 rtl_debug_rx_pkt
- 0x00001ad4 rtl_debug_dropped_pkt
- 0x00001b7a rtl_debug_dropped_tsync
- .text 0x00001bc6
0x3e ../../../../../src/radio/cc2420/source/hal_rf_set_channel.o
- 0x00001bc6 halRfSetChannel
- .text 0x00001c04
0x18 ../../../../../src/radio/cc2420/source/hal_rf_wait_for_crystal_oscillator.o
- 0x00001c04 halRfWaitForCrystalOscillator
- .text 0x00001c1c
0x12da ../../../../../src/radio/cc2420/source/basic_rf.o
- 0x00002d4a rf_set_channel
- 0x00001e42 rf_rx_on
- 0x00001dcc rf_auto_ack_enable
- 0x00001d30 rf_tx_power
- 0x00002d14 rf_set_rx
- 0x00001d96 rf_addr_decode_disable
- 0x000023f4 rf_data_mode
- 0x00001ebe rf_rx_check_fifop
- 0x00002466 rf_tx_packet
- 0x00001ed0 rf_rx_check_sfd
- 0x00001cb2 rf_security_enable
- 0x00002332 rf_rx_packet
- 0x00002456 rf_carrier_off
- 0x00001eaa rf_busy
- 0x00001e6a rf_polling_rx_on
- 0x00001ee4 rf_polling_rx_packet
- 0x00002446 rf_carrier_on
- 0x00001d26 rf_get_sem
- 0x00001e92 rf_rx_off
- 0x00002350 rf_flush_rx_fifo
- 0x00002d50 rf_init
- 0x00001d60 rf_addr_decode_enable
- 0x00002b3a rf_security_set_key
- 0x000027ac rf_tx_tdma_packet
- 0x00001c24 rf_security_set_ctr_counter
- 0x0000236e rf_set_cca_thresh
- 0x00002ac4 rf_addr_decode_set_my_mac
- 0x00001cfe rf_security_disable
- 0x00001e08 rf_auto_ack_disable
- 0x0000239e rf_test_mode
- 0x00001c1c rf_security_last_pkt_status
- .text 0x00002ef6
0x952 ../../../../../src/platform/firefly2_2/source/ulib.o
- 0x00002f84 nrk_gpio_set
- 0x0000365c nrk_get_button
- 0x00003822 nrk_kprintf
- 0x00002efc nrk_uart_data_ready
- 0x0000342c nrk_gpio_direction
- 0x000037c6 getc0
- 0x000036f0 nrk_led_set
- 0x00002f32 getc1
- 0x0000321a nrk_gpio_toggle
- 0x0000308e nrk_gpio_clr
- 0x00003740 putc0
- 0x000037e0 nrk_setup_uart
- 0x0000372a nrk_gpio_pullups
- 0x00003798 setup_uart1
- 0x00002f76 nrk_setup_ports
- 0x0000375a putc1
- 0x000036b6 nrk_led_clr
- 0x000031a6 nrk_gpio_get
- 0x00002f4c PORT_INIT
- 0x0000376a setup_uart0
- 0x0000367c nrk_led_toggle
- 0x00002ef6 nrk_uart_rx_signal_get
- .text 0x00003848
0xe ../../../../../src/platform/firefly2_2/source/hal_wait.o
- 0x00003848 halWait
- .text 0x00003856
0x11c ../../../../../src/platform/firefly2_2/source/nrk_eeprom.o
- 0x000038f0 read_eeprom_load_img_pages
- 0x0000387e nrk_eeprom_read_byte
- 0x0000386a
write_eeprom_current_image_checksum
- 0x00003936 write_eeprom_load_img_pages
- 0x0000388a read_eeprom_mac_address
- 0x0000392c nrk_eeprom_write_byte
- 0x0000394a write_eeprom_aes_key
- 0x000038dc read_eeprom_channel
- 0x00003904 read_eeprom_aes_key
- 0x00003856
read_eeprom_current_image_checksum
- .text 0x00003972
0x440 ../../../../../src/kernel/source/nrk.o
- 0x0000397a nrk_version
- 0x00003c96 nrk_init
- 0x00003986 nrk_TCB_init
- 0x00003dae nrk_halt
- 0x00003980 _nrk_timer_tick
- 0x00003976 nrk_int_enable
- 0x00003bd6 nrk_start
- 0x00003972 nrk_int_disable
- .text 0x00003db2
0x0 ../../../../../src/kernel/source/nrk_stats.o
- .text 0x00003db2
0x1b0 ../../../../../src/kernel/source/nrk_error.o
- 0x00003f4a nrk_error_add
- 0x00003f3c nrk_kernel_error_add
- 0x00003dcc nrk_error_get
- 0x00003dbe nrk_errno_get
- 0x00003db2 _nrk_errno_set
- 0x00003dec nrk_error_print
- .text 0x00003f62
0x1e8 ../../../../../src/kernel/source/nrk_stack_check.o
- 0x00003fac dump_stack_info
- 0x00003f62 nrk_stack_check_pid
- 0x00004104 nrk_stack_check
- .text 0x0000414a
0x5e0 ../../../../../src/kernel/source/nrk_events.o
- 0x000044f0 nrk_signal_delete
- 0x00004410 nrk_event_signal
- 0x00004368 nrk_sem_post
- 0x000042ce nrk_sem_create
- 0x000046b4 nrk_event_wait
- 0x0000432e nrk_sem_query
- 0x0000414a nrk_signal_create
- 0x0000425c nrk_signal_register
- 0x0000460c nrk_sem_pend
- 0x000042e6 nrk_sem_delete
- 0x000041c4 nrk_signal_get_registered_mask
- 0x000042d4 nrk_get_resource_index
- 0x000041d6 nrk_signal_unregister
- .text 0x0000472a
0x67e ../../../../../src/kernel/source/nrk_task.o
- 0x0000490e _nrk_wait_for_scheduler
- 0x00004900 nrk_get_pid
- 0x00004c80 nrk_wait_until_next_period
- 0x00004bac nrk_wait_ticks
- 0x000049dc nrk_wait_until
- 0x00004ada nrk_set_next_wakeup
- 0x0000474e nrk_add_to_readyQ
- 0x00004a8c nrk_wait_until_nw
- 0x00004738 nrk_print_readyQ
- 0x00004cfc nrk_activate_task
- 0x00004b56 nrk_wait_until_ticks
- 0x00004922 nrk_wait
- 0x00004cd8 nrk_terminate_task
- 0x0000472a nrk_get_high_ready_task_ID
- 0x00004c1a nrk_wait_until_next_n_periods
- 0x0000485c nrk_rem_from_readyQ
- .text 0x00004da8
0x5c0 ../../../../../src/kernel/source/nrk_time.o
- 0x00004fc4 nrk_time_set
- 0x000052b2 nrk_time_get
- 0x00004fe6 _nrk_time_to_ticks
- 0x000051a2 _nrk_time_to_ticks_long
+ .text 0x00000372 0x4
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/crtm1281.o
+ 0x00000372 __vector_38
+ 0x00000372 __vector_22
+ 0x00000372 __vector_28
+ 0x00000372 __vector_34
+ 0x00000372 __vector_24
+ 0x00000372 __vector_12
+ 0x00000372 __vector_46
+ 0x00000372 __bad_interrupt
+ 0x00000372 __vector_6
+ 0x00000372 __vector_31
+ 0x00000372 __vector_35
+ 0x00000372 __vector_39
+ 0x00000372 __vector_3
+ 0x00000372 __vector_23
+ 0x00000372 __vector_30
+ 0x00000372 __vector_45
+ 0x00000372 __vector_25
+ 0x00000372 __vector_11
+ 0x00000372 __vector_19
+ 0x00000372 __vector_7
+ 0x00000372 __vector_49
+ 0x00000372 __vector_41
+ 0x00000372 __vector_43
+ 0x00000372 __vector_27
+ 0x00000372 __vector_5
+ 0x00000372 __vector_33
+ 0x00000372 __vector_47
+ 0x00000372 __vector_37
+ 0x00000372 __vector_4
+ 0x00000372 __vector_44
+ 0x00000372 __vector_2
+ 0x00000372 __vector_21
+ 0x00000372 __vector_36
+ 0x00000372 __vector_29
+ 0x00000372 __vector_40
+ 0x00000372 __vector_8
+ 0x00000372 __vector_26
+ 0x00000372 __vector_48
+ 0x00000372 __vector_14
+ 0x00000372 __vector_10
+ 0x00000372 __vector_50
+ 0x00000372 __vector_16
+ 0x00000372 __vector_18
+ 0x00000372 __vector_20
+ 0x00000372 __vector_42
+ .text 0x00000376 0x3f4 main.o
+ 0x00000376 monome_setup_system
+ 0x000003a0 monome_add_controller
+ 0x000004da monome_comm_init
+ 0x0000054a nrk_create_taskset
+ 0x00000604 Task1
+ 0x0000070c main
+ .text 0x0000076a
0xe90 ../../../../../src/net/rt_link/rt_link.o
+ 0x0000076a rtl_get_tx_done_signal
+ 0x0000077c rtl_get_rx_pkt_signal
+ 0x0000078e rtl_wait_until_global_slot
+ 0x00000792 rtl_ready
+ 0x000007a2 rtl_rx_pkt_get
+ 0x000007e2 rtl_get_slot
+ 0x000007ee rtl_sync_status
+ 0x000007f4 rtl_check_abs_tx_status
+ 0x000007fa rtl_rx_pkt_release
+ 0x00000800 rtl_tx_pkt_check
+ 0x0000082e rtl_rx_pkt_check
+ 0x00000834 rtl_set_cycle_callback
+ 0x0000083e rtl_set_slot_callback
+ 0x00000848 rtl_set_rx_callback
+ 0x00000852 rtl_set_tx_callback
+ 0x0000085c rtl_set_abs_callback
+ 0x00000866 rtl_rx_pkt_set_buffer
+ 0x00000882 rtl_task_config
+ 0x0000092c rtl_start
+ 0x00000960 rtl_set_contention
+ 0x000009a8 rtl_init
+ 0x00000ae2 rtl_set_tx_power
+ 0x00000ae8 _rtl_tx
+ 0x00000c06 _rtl_rx
+ 0x00000d08 rtl_tx_abs_pkt
+ 0x00000d7a _rtl_rx_sync
+ 0x00000fd2 rtl_set_channel
+ 0x00000fdc rtl_tx_pkt
+ 0x00001062 rtl_nw_task
+ 0x00001404 rtl_get_global_slot
+ 0x000014d6 rtl_wait_until_rx_or_tx
+ 0x00001526 rtl_wait_until_rx_pkt
+ 0x00001558 rtl_wait_until_tx_done
+ .text 0x000015fa
0x47e ../../../../../src/net/rt_link/rtl_scheduler.o
+ 0x000015fa rtl_set_schedule
+ 0x000016aa rtl_get_schedule
+ 0x000016d4 rtl_clr_schedule
+ 0x0000177a _rtl_clr_abs_all_wakeup
+ 0x000017a0 rtl_set_abs_wakeup
+ 0x0000181c _rtl_clr_abs_wakeup
+ 0x00001886 _rtl_match_abs_wakeup
+ 0x0000193e _rtl_get_next_abs_wakeup
+ 0x00001980 _rtl_clear_sched_cache
+ 0x00001990 rtl_get_slots_until_next_wakeup
+ 0x00001a4c _rtl_pow
+ .text 0x00001a78
0x1fa ../../../../../src/net/rt_link/rtl_debug.o
+ 0x00001a78 rtl_debug_time_update
+ 0x00001a98 rtl_debug_time_get_drift
+ 0x00001aa2 rtl_debug_init
+ 0x00001ac4 bit_count
+ 0x00001ae6 rtl_debug_get_pkt_loss
+ 0x00001b1c rtl_debug_get_tsync_loss
+ 0x00001b42 rtl_debug_rx_pkt
+ 0x00001b84 rtl_debug_dropped_pkt
+ 0x00001bc8 rtl_debug_get_tsync_delay
+ 0x00001bdc rtl_debug_rx_tsync
+ 0x00001c26 rtl_debug_dropped_tsync
+ .text 0x00001c72
0x3a ../../../../../src/radio/cc2420/source/hal_rf_set_channel.o
+ 0x00001c72 halRfSetChannel
+ .text 0x00001cac
0x18 ../../../../../src/radio/cc2420/source/hal_rf_wait_for_crystal_oscillator.o
+ 0x00001cac halRfWaitForCrystalOscillator
+ .text 0x00001cc4
0x11f2 ../../../../../src/radio/cc2420/source/basic_rf.o
+ 0x00001cc4 rf_security_last_pkt_status
+ 0x00001cca rf_security_set_ctr_counter
+ 0x00001d50 rf_security_enable
+ 0x00001d9c rf_security_disable
+ 0x00001dc4 rf_get_sem
+ 0x00001dce rf_tx_power
+ 0x00001dfa rf_addr_decode_enable
+ 0x00001e2c rf_addr_decode_disable
+ 0x00001e5e rf_auto_ack_enable
+ 0x00001e96 rf_auto_ack_disable
+ 0x00001ecc rf_rx_on
+ 0x00001ef4 rf_polling_rx_on
+ 0x00001f1c rf_rx_off
+ 0x00001f34 rf_busy
+ 0x00001f46 rf_rx_check_fifop
+ 0x00001f50 rf_rx_check_sfd
+ 0x00001f62 rf_polling_rx_packet
+ 0x00002388 rf_rx_packet
+ 0x0000239a rf_flush_rx_fifo
+ 0x000023b8 rf_set_cca_thresh
+ 0x000023e4 rf_test_mode
+ 0x0000243a rf_data_mode
+ 0x0000248c rf_carrier_on
+ 0x0000249c rf_carrier_off
+ 0x000024ac rf_tx_packet
+ 0x000027c4 rf_tx_tdma_packet
+ 0x00002ab4 rf_addr_decode_set_my_mac
+ 0x00002b18 rf_security_set_key
+ 0x00002ce6 rf_set_rx
+ 0x00002d1c rf_set_channel
+ 0x00002d22 rf_init
+ .text 0x00002eb6
0x8bc ../../../../../src/platform/firefly2_2/source/ulib.o
+ 0x00002eb6 nrk_uart_rx_signal_get
+ 0x00002eba nrk_uart_data_ready
+ 0x00002ede getc1
+ 0x00002ef6 nrk_setup_ports
+ 0x00002f26 PORT_INIT
+ 0x00002f50 nrk_gpio_set
+ 0x0000303e nrk_gpio_clr
+ 0x0000313a nrk_gpio_get
+ 0x0000319e nrk_gpio_toggle
+ 0x00003396 nrk_gpio_direction
+ 0x0000358c nrk_get_button
+ 0x000035a0 nrk_led_toggle
+ 0x000035d4 nrk_led_clr
+ 0x00003608 nrk_led_set
+ 0x0000363c nrk_gpio_pullups
+ 0x00003650 putc0
+ 0x0000366a putc1
+ 0x0000367a setup_uart0
+ 0x000036a4 setup_uart1
+ 0x000036ce getc0
+ 0x000036e6 nrk_setup_uart
+ 0x0000374c nrk_kprintf
+ .text 0x00003772
0xe ../../../../../src/platform/firefly2_2/source/hal_wait.o
+ 0x00003772 halWait
+ .text 0x00003780
0x138 ../../../../../src/platform/firefly2_2/source/nrk_eeprom.o
+ 0x00003780
write_eeprom_current_image_checksum
+ 0x00003790 write_eeprom_aes_key
+ 0x000037be write_eeprom_load_img_pages
+ 0x000037ce nrk_eeprom_write_byte
+ 0x000037d4
read_eeprom_current_image_checksum
+ 0x000037ee read_eeprom_aes_key
+ 0x0000381c read_eeprom_load_img_pages
+ 0x00003836 read_eeprom_channel
+ 0x00003850 read_eeprom_mac_address
+ 0x000038b2 nrk_eeprom_read_byte
+ .text 0x000038b8
0x432 ../../../../../src/kernel/source/nrk.o
+ 0x000038b8 nrk_int_disable
+ 0x000038bc nrk_int_enable
+ 0x000038c0 nrk_halt
+ 0x000038c4 nrk_version
+ 0x000038ca _nrk_timer_tick
+ 0x000038d0 nrk_TCB_init
+ 0x00003b1c nrk_start
+ 0x00003bd6 nrk_init
+ .text 0x00003cea
0x0 ../../../../../src/kernel/source/nrk_stats.o
+ .text 0x00003cea
0x1ac ../../../../../src/kernel/source/nrk_error.o
+ 0x00003cea _nrk_errno_set
+ 0x00003cf6 nrk_errno_get
+ 0x00003d02 nrk_error_get
+ 0x00003d1a nrk_error_print
+ 0x00003e70 nrk_kernel_error_add
+ 0x00003e7e nrk_error_add
+ .text 0x00003e96
0x23e ../../../../../src/kernel/source/nrk_stack_check.o
+ 0x00003e96 nrk_stack_check_pid
+ 0x00003eda dump_stack_info
+ 0x0000408e nrk_stack_check
+ .text 0x000040d4
0x518 ../../../../../src/kernel/source/nrk_events.o
+ 0x000040d4 nrk_signal_create
+ 0x00004146 nrk_signal_get_registered_mask
+ 0x00004158 nrk_signal_unregister
+ 0x000041da nrk_signal_register
+ 0x00004248 nrk_sem_create
+ 0x0000424e nrk_get_resource_index
+ 0x0000425c nrk_sem_delete
+ 0x00004286 nrk_sem_query
+ 0x0000429e nrk_sem_post
+ 0x00004314 nrk_event_signal
+ 0x000043ee nrk_signal_delete
+ 0x00004506 nrk_sem_pend
+ 0x00004572 nrk_event_wait
+ .text 0x000045ec
0x6d0 ../../../../../src/kernel/source/nrk_task.o
+ 0x000045ec nrk_get_high_ready_task_ID
+ 0x000045f8 nrk_print_readyQ
+ 0x0000460e nrk_add_to_readyQ
+ 0x00004772 nrk_rem_from_readyQ
+ 0x00004830 nrk_get_pid
+ 0x0000483c _nrk_wait_for_scheduler
+ 0x00004850 nrk_wait
+ 0x00004908 nrk_wait_until
+ 0x000049b4 nrk_wait_until_nw
+ 0x00004a00 nrk_set_next_wakeup
+ 0x00004a78 nrk_wait_until_ticks
+ 0x00004acc nrk_wait_ticks
+ 0x00004b38 nrk_wait_until_next_n_periods
+ 0x00004b9c nrk_wait_until_next_period
+ 0x00004bf2 nrk_terminate_task
+ 0x00004c14 nrk_activate_task
+ .text 0x00004cbc
0x5b6 ../../../../../src/kernel/source/nrk_time.o
+ 0x00004cbc nrk_time_sub
+ 0x00004dd4 nrk_time_add
0x00004ec6 nrk_time_compact_nanos
- 0x00004f0a nrk_time_add
- 0x00004da8 nrk_time_sub
- 0x000050ea _nrk_ticks_to_time
- .text 0x00005368
0x48 ../../../../../src/kernel/source/nrk_idle_task.o
- 0x00005368 nrk_idle_task
- .text 0x000053b0
0x3f0 ../../../../../src/kernel/source/nrk_scheduler.o
- 0x000053b0 _nrk_scheduler
- .text 0x000057a0
0x0 ../../../../../src/kernel/source/nrk_driver.o
- .text 0x000057a0
0x0 ../../../../../src/kernel/source/nrk_reserve.o
- .text 0x000057a0
0x398 ../../../../../src/kernel/hal/atmega1281/nrk_timer.o
- 0x00005a36 nrk_high_speed_timer_wait
- 0x000059ae __vector_32
- 0x00005864 nrk_timer_int_reset
- 0x00005830 _nrk_os_timer_reset
- 0x0000592c _nrk_os_timer_get
- 0x00005856 nrk_timer_int_stop
- 0x000057a0 nrk_spin_wait_us
- 0x00005934 __vector_13
- 0x000057bc _nrk_high_speed_timer_reset
- 0x0000599a __vector_17
- 0x00005ac2 _nrk_setup_timer
- 0x00005a0a __vector_default
- 0x0000584e _nrk_set_next_wakeup
- 0x0000587c nrk_timer_int_read
- 0x000057ae _nrk_high_speed_timer_stop
- 0x000057b4 _nrk_high_speed_timer_start
- 0x00005890 nrk_timer_int_start
- 0x00005934 __vector_15
- 0x000058a6 nrk_timer_int_configure
- 0x00005818 _nrk_os_timer_set
- 0x000057cc _nrk_high_speed_timer_get
- 0x00005802 _nrk_os_timer_stop
- 0x0000581e _nrk_os_timer_start
- 0x00005844 _nrk_get_next_wakeup
- .text 0x00005b38
0x34e ../../../../../src/kernel/hal/atmega1281/nrk_ext_int.o
- 0x00005b38 nrk_ext_int_enable
- 0x00005dce __vector_1
- 0x00005c50 nrk_ext_int_configure
- 0x00005e2a __vector_9
- 0x00005d72 __vector_2
- 0x00005bc6 nrk_ext_int_disable
- .text 0x00005e86
0x16 ../../../../../src/kernel/hal/atmega1281/nrk_status.o
- 0x00005e9a update_watchdog
- 0x00005e86 _nrk_startup_ok
- .text 0x00005e9c
0x54 ../../../../../src/kernel/hal/atmega1281/nrk_watchdog.o
- 0x00005eb2 nrk_watchdog_disable
- 0x00005ed0 nrk_watchdog_enable
- 0x00005e9c nrk_watchdog_check
- 0x00005eae nrk_watchdog_reset
- .text 0x00005ef0
0x130 ../../../../../src/kernel/hal/atmega1281/nrk_cpu.o
- 0x00005fa4 nrk_stack_pointer_init
- 0x00005fe2 nrk_task_set_stk
- 0x00005f0a nrk_idle
- 0x00005ef0 nrk_battery_save
- 0x00005f20 nrk_task_set_entry_function
- 0x00005fd8 nrk_target_start
- 0x00005fc6 nrk_stack_pointer_restore
- 0x00005f28 nrk_task_stk_init
- 0x00005ef2 nrk_sleep
- .text 0x00006020
0x56 ../../../../../src/kernel/hal/atmega1281/atmel_hw_specific.o
- 0x00006020 nrk_start_high_ready_task
- .text 0x00006076 0x34c
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libprintf_min.a(vfprintf_min.o)
- 0x00006076 vfprintf
- .text 0x000063c2 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_mulsi3.o)
- .text 0x000063c2 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_udivmodhi4.o)
- .text 0x000063c2 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_divmodhi4.o)
- .text 0x000063c2 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_udivmodsi4.o)
- .text 0x000063c2 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_exit.o)
- .text 0x000063c2 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_clear_bss.o)
- .text 0x000063c2 0xde
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(rand.o)
- 0x0000647a rand_r
- 0x00006480 rand
- 0x0000648a srand
- .text 0x000064a0 0x12
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(strlen_P.o)
- 0x000064a0 strlen_P
- .text 0x000064b2 0xa0
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(fdevopen.o)
- 0x000064b2 fdevopen
- .text 0x00006552 0x5a
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(fputc.o)
- 0x00006552 fputc
- .text 0x000065ac 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(iob.o)
- .text 0x000065ac 0x40
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(printf.o)
- 0x000065ac printf
- .text 0x000065ec 0x66
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(puts.o)
- 0x000065ec puts
- .text 0x00006652 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(ee_rb.1F2021.o)
- .text 0x00006652 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(ee_wb.1F2021.o)
- .text 0x00006652 0x38
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(calloc.o)
- 0x00006652 calloc
- .text 0x0000668a 0x1f2
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(malloc.o)
- 0x0000668a malloc
- 0x000067d0 free
- .text 0x0000687c 0xe
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(memset.o)
- 0x0000687c memset
- .text 0x0000688a 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_divmodsi4.o)
- 0x0000688a . = ALIGN (0x2)
+ 0x00004f0a nrk_time_set
+ 0x00004f2c _nrk_time_to_ticks
+ 0x00005030 _nrk_ticks_to_time
+ 0x000050a4 _nrk_time_to_ticks_long
+ 0x000051bc nrk_time_get
+ .text 0x00005272
0x4c ../../../../../src/kernel/source/nrk_idle_task.o
+ 0x00005272 nrk_idle_task
+ .text 0x000052be
0x3f6 ../../../../../src/kernel/source/nrk_scheduler.o
+ 0x000052be _nrk_scheduler
+ .text 0x000056b4
0x0 ../../../../../src/kernel/source/nrk_driver.o
+ .text 0x000056b4
0x0 ../../../../../src/kernel/source/nrk_reserve.o
+ .text 0x000056b4
0x360 ../../../../../src/kernel/hal/atmega1281/nrk_timer.o
+ 0x000056b4 nrk_spin_wait_us
+ 0x000056c2 _nrk_setup_timer
+ 0x0000572c _nrk_high_speed_timer_stop
+ 0x00005732 _nrk_high_speed_timer_start
+ 0x0000573a _nrk_high_speed_timer_reset
+ 0x0000574a nrk_high_speed_timer_wait
+ 0x000057c4 _nrk_high_speed_timer_get
+ 0x000057ea _nrk_os_timer_stop
+ 0x00005800 _nrk_os_timer_set
+ 0x00005806 _nrk_os_timer_start
+ 0x00005818 _nrk_os_timer_reset
+ 0x0000582c _nrk_get_next_wakeup
+ 0x00005834 _nrk_set_next_wakeup
+ 0x0000583c nrk_timer_int_stop
+ 0x00005848 nrk_timer_int_reset
+ 0x0000585c nrk_timer_int_read
+ 0x00005872 nrk_timer_int_start
+ 0x00005884 nrk_timer_int_configure
+ 0x00005900 _nrk_os_timer_get
+ 0x00005906 __vector_13
+ 0x00005906 __vector_15
+ 0x0000596c __vector_17
+ 0x00005980 __vector_32
+ 0x000059e4 __vector_default
+ .text 0x00005a14
0x2f2 ../../../../../src/kernel/hal/atmega1281/nrk_ext_int.o
+ 0x00005a14 nrk_ext_int_enable
+ 0x00005a9c nrk_ext_int_disable
+ 0x00005b24 nrk_ext_int_configure
+ 0x00005c3e __vector_1
+ 0x00005ca2 __vector_9
+ .text 0x00005d06
0x12 ../../../../../src/kernel/hal/atmega1281/nrk_status.o
+ 0x00005d06 _nrk_startup_ok
+ 0x00005d16 update_watchdog
+ .text 0x00005d18
0x50 ../../../../../src/kernel/hal/atmega1281/nrk_watchdog.o
+ 0x00005d18 nrk_watchdog_check
+ 0x00005d26 nrk_watchdog_reset
+ 0x00005d2a nrk_watchdog_enable
+ 0x00005d4a nrk_watchdog_disable
+ .text 0x00005d68
0x100 ../../../../../src/kernel/hal/atmega1281/nrk_cpu.o
+ 0x00005d68 nrk_battery_save
+ 0x00005d6a nrk_sleep
+ 0x00005d82 nrk_idle
+ 0x00005d98 nrk_task_set_entry_function
+ 0x00005da0 nrk_task_stk_init
+ 0x00005df6 nrk_stack_pointer_init
+ 0x00005e14 nrk_stack_pointer_restore
+ 0x00005e22 nrk_target_start
+ 0x00005e2c nrk_task_set_stk
+ .text 0x00005e68
0x56 ../../../../../src/kernel/hal/atmega1281/atmel_hw_specific.o
+ 0x00005e68 nrk_start_high_ready_task
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libprintf_min.a(vfprintf_min.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_mulsi3.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_udivmodhi4.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_divmodhi4.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_udivmodsi4.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_exit.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_clear_bss.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(rand.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(strchr_P.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(fdevopen.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(fputc.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(iob.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(printf.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(puts.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(ultoa_invert.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(eerd_byte_atmega1281.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(eewr_byte_atmega1281.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(calloc.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(malloc.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(memset.o)
+ .text 0x00005ebe 0x0
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_divmodsi4.o)
+ 0x00005ebe . = ALIGN (0x2)
*(.text.*)
- .text.libgcc 0x0000688a 0x3e
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_mulsi3.o)
- 0x0000688a __mulsi3
- .text.libgcc 0x000068c8 0x28
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_udivmodhi4.o)
- 0x000068c8 __udivmodhi4
- .text.libgcc 0x000068f0 0x26
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_divmodhi4.o)
- 0x000068f0 __divmodhi4
- 0x000068f0 _div
- .text.libgcc 0x00006916 0x44
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_udivmodsi4.o)
- 0x00006916 __udivmodsi4
- .text.libgcc 0x0000695a 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_exit.o)
- .text.libgcc 0x0000695a 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_clear_bss.o)
- .text.eeprom 0x0000695a 0x10
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(ee_rb.1F2021.o)
- 0x0000695a __eeprom_read_byte_1F2021
- .text.eeprom 0x0000696a 0x18
/sw/share/avr/lib/gcc/avr/4.2.0/../../../../avr/lib/avr5/libc.a(ee_wb.1F2021.o)
- 0x0000696a __eeprom_write_byte_1F2021
- .text.libgcc 0x00006982 0x36
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_divmodsi4.o)
- 0x00006982 __divmodsi4
- 0x000069b8 . = ALIGN (0x2)
+ .text.avr-libc
+ 0x00005ebe 0x280
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libprintf_min.a(vfprintf_min.o)
+ 0x00005ebe vfprintf
+ .text.libgcc 0x0000613e 0x3e
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_mulsi3.o)
+ 0x0000613e __mulsi3
+ .text.libgcc 0x0000617c 0x28
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_udivmodhi4.o)
+ 0x0000617c __udivmodhi4
+ .text.libgcc 0x000061a4 0x26
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_divmodhi4.o)
+ 0x000061a4 __divmodhi4
+ 0x000061a4 _div
+ .text.libgcc 0x000061ca 0x44
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_udivmodsi4.o)
+ 0x000061ca __udivmodsi4
+ .text.libgcc 0x0000620e 0x0
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_exit.o)
+ .text.libgcc 0x0000620e 0x0
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_clear_bss.o)
+ .text.avr-libc
+ 0x0000620e 0xd6
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(rand.o)
+ 0x000062be rand_r
+ 0x000062c4 rand
+ 0x000062ce srand
+ .text.avr-libc
+ 0x000062e4 0x16
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(strchr_P.o)
+ 0x000062e4 strchr_P
+ .text.avr-libc
+ 0x000062fa 0x98
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(fdevopen.o)
+ 0x000062fa fdevopen
+ .text.avr-libc
+ 0x00006392 0x58
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(fputc.o)
+ 0x00006392 fputc
+ .text.avr-libc
+ 0x000063ea 0x24
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(printf.o)
+ 0x000063ea printf
+ .text.avr-libc
+ 0x0000640e 0x6a
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(puts.o)
+ 0x0000640e puts
+ .text.avr-libc
+ 0x00006478 0xbc
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(ultoa_invert.o)
+ 0x00006478 __ultoa_invert
+ .text.avr-libc
+ 0x00006534 0x10
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(eerd_byte_atmega1281.o)
+ 0x00006534 __eerd_byte_m1281
+ .text.avr-libc
+ 0x00006544 0x1c
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(eewr_byte_atmega1281.o)
+ 0x00006544 __eewr_byte_m1281
+ 0x00006546 __eewr_r18_m1281
+ .text.avr-libc
+ 0x00006560 0x38
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(calloc.o)
+ 0x00006560 calloc
+ .text.avr-libc
+ 0x00006598 0x20a
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(malloc.o)
+ 0x00006598 malloc
+ 0x000066f2 free
+ .text.avr-libc
+ 0x000067a2 0xe
/usr/lib/gcc/avr/4.3.4/../../../avr/lib/avr51/libc.a(memset.o)
+ 0x000067a2 memset
+ .text.libgcc 0x000067b0 0x36
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_divmodsi4.o)
+ 0x000067b0 __divmodsi4
+ 0x000067e6 . = ALIGN (0x2)
*(.fini9)
- .fini9 0x000069b8 0x0
/sw/share/avr/lib/gcc/avr/4.2.0/avr5/libgcc.a(_exit.o)
- 0x000069b8 exit
- 0x000069b8 _exit
+ .fini9 0x000067e6 0x0
/usr/lib/gcc/avr/4.3.4/avr51/libgcc.a(_exit.o)
+ 0x000067e6 exit
+ 0x000067e6 _exit
*(.fini9)
*(.fini8)
*(.fini8)
@@ -747,338 +754,382 @@
*(.fini1)
*(.fini1)
*(.fini0)
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/monome/controller_base_comm/base_station/main.sym Sat Dec 11
12:36:09 2010
+++ /trunk/monome/controller_base_comm/base_station/main.sym Tue Dec 21
13:38:34 2010
@@ -70,6 +70,41 @@
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
+00000034 a __CCP__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
@@ -175,491 +210,497 @@
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
-000000cc T __ctors_end
-000000cc T __ctors_start
-000000cc T __dtors_end
-000000cc T __dtors_start
-000000f0 t __c.2963
-0000011b t __c.2961
-00000146 t __c.2376
-0000014d t __c.2373
-00000168 t __c.2370
-00000180 t __c.2367
-000001a0 t __c.2364
-000001b4 t __c.2361
-000001c5 t __c.2358
-000001d4 t __c.2355
-000001ef t __c.2352
-000001fb t __c.2349
-00000220 t __c.2346
-0000023e t __c.2343
-00000251 t __c.2340
-00000264 t __c.2337
-0000027c t __c.2334
-00000292 t __c.2331
-000002ad t __c.2328
-000002c3 t __c.2325
-000002d7 t __c.2321
-000002fe t __c.2318
-00000302 t __c.2316
-0000030e t __c.2249
-0000031e W __init
-0000032a T __do_copy_data
-00000344 T __do_clear_bss
-0000034c t .do_clear_bss_loop
-0000034e t .do_clear_bss_start
-0000035c T __bad_interrupt
-0000035c W __vector_10
-0000035c W __vector_11
-0000035c W __vector_12
-0000035c W __vector_14
-0000035c W __vector_16
-0000035c W __vector_18
-0000035c W __vector_19
-0000035c W __vector_20
-0000035c W __vector_21
-0000035c W __vector_22
-0000035c W __vector_23
-0000035c W __vector_24
-0000035c W __vector_25
-0000035c W __vector_26
-0000035c W __vector_27
-0000035c W __vector_28
-0000035c W __vector_29
-0000035c W __vector_3
-0000035c W __vector_30
-0000035c W __vector_31
-0000035c W __vector_33
-0000035c W __vector_34
-0000035c W __vector_35
-0000035c W __vector_36
-0000035c W __vector_37
-0000035c W __vector_38
-0000035c W __vector_39
-0000035c W __vector_4
-0000035c W __vector_40
-0000035c W __vector_41
-0000035c W __vector_42
-0000035c W __vector_43
-0000035c W __vector_44
-0000035c W __vector_45
-0000035c W __vector_46
-0000035c W __vector_47
-0000035c W __vector_48
-0000035c W __vector_49
-0000035c W __vector_5
-0000035c W __vector_50
-0000035c W __vector_6
-0000035c W __vector_7
-0000035c W __vector_8
-00000360 T monome_setup_system
-0000038c T monome_add_controller
-000004a6 T monome_comm_init
-00000516 T nrk_create_taskset
-000005d0 T Task1
-000006ae T main
-00000716 T rtl_wait_until_global_slot
-0000071c T rtl_ready
-00000730 T rtl_get_slot
-0000073a T rtl_sync_status
-00000742 T rtl_check_abs_tx_status
-0000074a T rtl_rx_pkt_release
-00000750 T rtl_tx_pkt_check
-00000786 T rtl_rx_pkt_check
-00000792 T rtl_set_cycle_callback
-0000079c T rtl_set_slot_callback
-000007a6 T rtl_set_rx_callback
-000007b0 T rtl_set_tx_callback
-000007ba T rtl_set_abs_callback
-000007c4 T rtl_rx_pkt_set_buffer
-000007e4 T rtl_task_config
-0000088e T rtl_start
-000008ce T rtl_set_contention
-00000916 T rtl_init
-00000a50 T rtl_set_tx_power
-00000a56 T _rtl_tx
-00000b78 T _rtl_rx
-00000c90 T rtl_tx_abs_pkt
-00000d06 T _rtl_rx_sync
-00000f76 T rtl_set_channel
-00000f80 T rtl_tx_pkt
-00001008 T rtl_nw_task
-00001398 T rtl_get_global_slot
-00001476 T rtl_wait_until_rx_or_tx
-000014c8 T rtl_wait_until_tx_done
-00001506 T rtl_wait_until_rx_pkt
-0000153a T rtl_rx_pkt_get
-00001578 T rtl_get_rx_pkt_signal
-00001592 T rtl_get_tx_done_signal
-000015ac T rtl_set_schedule
-00001662 T rtl_get_schedule
-0000169c T rtl_clr_schedule
-00001748 T _rtl_clr_abs_all_wakeup
-0000176e T rtl_set_abs_wakeup
-000017f0 T _rtl_clr_abs_wakeup
-0000185a T _rtl_match_abs_wakeup
-000018c2 T _rtl_get_next_abs_wakeup
-00001904 T _rtl_clear_sched_cache
-00001914 T _rtl_pow
-00001948 T rtl_get_slots_until_next_wakeup
-000019ee T rtl_debug_time_update
-00001a0e T rtl_debug_time_get_drift
-00001a18 T rtl_debug_init
-00001a3a T bit_count
-00001a5e T rtl_debug_get_pkt_loss
-00001a86 T rtl_debug_get_tsync_loss
-00001a92 T rtl_debug_rx_pkt
-00001ad4 T rtl_debug_dropped_pkt
-00001b18 T rtl_debug_get_tsync_delay
-00001b30 T rtl_debug_rx_tsync
-00001b7a T rtl_debug_dropped_tsync
-00001bc6 T halRfSetChannel
-00001c04 T halRfWaitForCrystalOscillator
-00001c1c T rf_security_last_pkt_status
-00001c24 T rf_security_set_ctr_counter
-00001cb2 T rf_security_enable
-00001cfe T rf_security_disable
-00001d26 T rf_get_sem
-00001d30 T rf_tx_power
-00001d60 T rf_addr_decode_enable
-00001d96 T rf_addr_decode_disable
-00001dcc T rf_auto_ack_enable
-00001e08 T rf_auto_ack_disable
-00001e42 T rf_rx_on
-00001e6a T rf_polling_rx_on
-00001e92 T rf_rx_off
-00001eaa T rf_busy
-00001ebe T rf_rx_check_fifop
-00001ed0 T rf_rx_check_sfd
-00001ee4 T rf_polling_rx_packet
+000000f0 t __c.2651
+0000011b t __c.2649
+00000146 t __c.2088
+0000014d t __c.2085
+00000168 t __c.2082
+00000180 t __c.2079
+000001a0 t __c.2076
+000001b4 t __c.2073
+000001c5 t __c.2070
+000001d4 t __c.2067
+000001ef t __c.2064
+000001fb t __c.2061
+00000220 t __c.2058
+0000023e t __c.2055
+00000251 t __c.2052
+00000264 t __c.2049
+0000027c t __c.2046
+00000292 t __c.2043
+000002ad t __c.2040
+000002c3 t __c.2037
+000002d7 t __c.2033
+000002fe t __c.2030
+00000302 t __c.2028
+0000030e t __c.1962
+0000031d t __c.1755
+00000324 t __c.1749
+00000334 T __ctors_end
+00000334 T __ctors_start
+00000334 T __dtors_end
+00000334 T __dtors_start
+00000334 W __init
+00000334 T __trampolines_end
+00000334 T __trampolines_start
+00000340 T __do_copy_data
+0000035a T __do_clear_bss
+00000362 t .do_clear_bss_loop
+00000364 t .do_clear_bss_start
+00000372 T __bad_interrupt
+00000372 W __vector_10
+00000372 W __vector_11
+00000372 W __vector_12
+00000372 W __vector_14
+00000372 W __vector_16
+00000372 W __vector_18
+00000372 W __vector_19
+00000372 W __vector_2
+00000372 W __vector_20
+00000372 W __vector_21
+00000372 W __vector_22
+00000372 W __vector_23
+00000372 W __vector_24
+00000372 W __vector_25
+00000372 W __vector_26
+00000372 W __vector_27
+00000372 W __vector_28
+00000372 W __vector_29
+00000372 W __vector_3
+00000372 W __vector_30
+00000372 W __vector_31
+00000372 W __vector_33
+00000372 W __vector_34
+00000372 W __vector_35
+00000372 W __vector_36
+00000372 W __vector_37
+00000372 W __vector_38
+00000372 W __vector_39
+00000372 W __vector_4
+00000372 W __vector_40
+00000372 W __vector_41
+00000372 W __vector_42
+00000372 W __vector_43
+00000372 W __vector_44
+00000372 W __vector_45
+00000372 W __vector_46
+00000372 W __vector_47
+00000372 W __vector_48
+00000372 W __vector_49
+00000372 W __vector_5
+00000372 W __vector_50
+00000372 W __vector_6
+00000372 W __vector_7
+00000372 W __vector_8
+00000376 T monome_setup_system
+000003a0 T monome_add_controller
+000004da T monome_comm_init
+0000054a T nrk_create_taskset
+00000604 T Task1
+0000070c T main
+0000076a T rtl_get_tx_done_signal
+0000077c T rtl_get_rx_pkt_signal
+0000078e T rtl_wait_until_global_slot
+00000792 T rtl_ready
+000007a2 T rtl_rx_pkt_get
+000007e2 T rtl_get_slot
+000007ee T rtl_sync_status
+000007f4 T rtl_check_abs_tx_status
+000007fa T rtl_rx_pkt_release
+00000800 T rtl_tx_pkt_check
+0000082e T rtl_rx_pkt_check
+00000834 T rtl_set_cycle_callback
+0000083e T rtl_set_slot_callback
+00000848 T rtl_set_rx_callback
+00000852 T rtl_set_tx_callback
+0000085c T rtl_set_abs_callback
+00000866 T rtl_rx_pkt_set_buffer
+00000882 T rtl_task_config
+0000092c T rtl_start
+00000960 T rtl_set_contention
+000009a8 T rtl_init
+00000ae2 T rtl_set_tx_power
+00000ae8 T _rtl_tx
+00000c06 T _rtl_rx
+00000d08 T rtl_tx_abs_pkt
+00000d7a T _rtl_rx_sync
+00000fd2 T rtl_set_channel
+00000fdc T rtl_tx_pkt
+00001062 T rtl_nw_task
+00001404 T rtl_get_global_slot
+000014d6 T rtl_wait_until_rx_or_tx
+00001526 T rtl_wait_until_rx_pkt
+00001558 T rtl_wait_until_tx_done
+000015fa T rtl_set_schedule
+000016aa T rtl_get_schedule
+000016d4 T rtl_clr_schedule
+0000177a T _rtl_clr_abs_all_wakeup
+000017a0 T rtl_set_abs_wakeup
+0000181c T _rtl_clr_abs_wakeup
+00001886 T _rtl_match_abs_wakeup
+0000193e T _rtl_get_next_abs_wakeup
+00001980 T _rtl_clear_sched_cache
+00001990 T rtl_get_slots_until_next_wakeup
+00001a4c T _rtl_pow
+00001a78 T rtl_debug_time_update
+00001a98 T rtl_debug_time_get_drift
+00001aa2 T rtl_debug_init
+00001ac4 T bit_count
+00001ae6 T rtl_debug_get_pkt_loss
+00001b1c T rtl_debug_get_tsync_loss
+00001b42 T rtl_debug_rx_pkt
+00001b84 T rtl_debug_dropped_pkt
+00001bc8 T rtl_debug_get_tsync_delay
+00001bdc T rtl_debug_rx_tsync
+00001c26 T rtl_debug_dropped_tsync
+00001c72 T halRfSetChannel
+00001cac T halRfWaitForCrystalOscillator
+00001cc4 T rf_security_last_pkt_status
+00001cca T rf_security_set_ctr_counter
+00001d50 T rf_security_enable
+00001d9c T rf_security_disable
+00001dc4 T rf_get_sem
+00001dce T rf_tx_power
+00001dfa T rf_addr_decode_enable
+00001e2c T rf_addr_decode_disable
+00001e5e T rf_auto_ack_enable
+00001e96 T rf_auto_ack_disable
+00001ecc T rf_rx_on
+00001ef4 T rf_polling_rx_on
+00001f1c T rf_rx_off
+00001f34 T rf_busy
+00001f46 T rf_rx_check_fifop
+00001f50 T rf_rx_check_sfd
+00001f62 T rf_polling_rx_packet
000021ff W __stack
-00002332 T rf_rx_packet
-00002350 T rf_flush_rx_fifo
-0000236e T rf_set_cca_thresh
-0000239e T rf_test_mode
-000023f4 T rf_data_mode
-00002446 T rf_carrier_on
-00002456 T rf_carrier_off
-00002466 T rf_tx_packet
-000027ac T rf_tx_tdma_packet
-00002ac4 T rf_addr_decode_set_my_mac
-00002b3a T rf_security_set_key
-00002d14 T rf_set_rx
-00002d4a T rf_set_channel
-00002d50 T rf_init
-00002ef6 T nrk_uart_rx_signal_get
-00002efc T nrk_uart_data_ready
-00002f32 T getc1
-00002f4c T PORT_INIT
-00002f76 T nrk_setup_ports
-00002f84 T nrk_gpio_set
-0000308e T nrk_gpio_clr
-000031a6 T nrk_gpio_get
-0000321a T nrk_gpio_toggle
-0000342c T nrk_gpio_direction
-0000365c T nrk_get_button
-0000367c T nrk_led_toggle
-000036b6 T nrk_led_clr
-000036f0 T nrk_led_set
-0000372a T nrk_gpio_pullups
-00003740 T putc0
-0000375a T putc1
-0000376a T setup_uart0
-00003798 T setup_uart1
-000037c6 T getc0
-000037e0 T nrk_setup_uart
-00003822 T nrk_kprintf
-00003848 T halWait
-00003856 T read_eeprom_current_image_checksum
-0000386a T write_eeprom_current_image_checksum
-0000387e T nrk_eeprom_read_byte
-0000388a T read_eeprom_mac_address
-000038dc T read_eeprom_channel
-000038f0 T read_eeprom_load_img_pages
-00003904 T read_eeprom_aes_key
-0000392c T nrk_eeprom_write_byte
-00003936 T write_eeprom_load_img_pages
-0000394a T write_eeprom_aes_key
-00003972 T nrk_int_disable
-00003976 T nrk_int_enable
-0000397a T nrk_version
-00003980 T _nrk_timer_tick
-00003986 T nrk_TCB_init
-00003bd6 T nrk_start
-00003c96 T nrk_init
-00003dae T nrk_halt
-00003db2 T _nrk_errno_set
-00003dbe T nrk_errno_get
-00003dcc T nrk_error_get
-00003dec T nrk_error_print
-00003f3c T nrk_kernel_error_add
-00003f4a T nrk_error_add
-00003f62 T nrk_stack_check_pid
-00003fac T dump_stack_info
-00004104 T nrk_stack_check
-0000414a T nrk_signal_create
-000041c4 T nrk_signal_get_registered_mask
-000041d6 T nrk_signal_unregister
-0000425c T nrk_signal_register
-000042ce T nrk_sem_create
-000042d4 T nrk_get_resource_index
-000042e6 T nrk_sem_delete
-0000432e T nrk_sem_query
-00004368 T nrk_sem_post
-00004410 T nrk_event_signal
-000044f0 T nrk_signal_delete
-0000460c T nrk_sem_pend
-000046b4 T nrk_event_wait
-0000472a T nrk_get_high_ready_task_ID
-00004738 T nrk_print_readyQ
-0000474e T nrk_add_to_readyQ
-0000485c T nrk_rem_from_readyQ
-00004900 T nrk_get_pid
-0000490e T _nrk_wait_for_scheduler
-00004922 T nrk_wait
-000049dc T nrk_wait_until
-00004a8c T nrk_wait_until_nw
-00004ada T nrk_set_next_wakeup
-00004b56 T nrk_wait_until_ticks
-00004bac T nrk_wait_ticks
-00004c1a T nrk_wait_until_next_n_periods
-00004c80 T nrk_wait_until_next_period
-00004cd8 T nrk_terminate_task
-00004cfc T nrk_activate_task
-00004da8 T nrk_time_sub
+00002388 T rf_rx_packet
+0000239a T rf_flush_rx_fifo
+000023b8 T rf_set_cca_thresh
+000023e4 T rf_test_mode
+0000243a T rf_data_mode
+0000248c T rf_carrier_on
+0000249c T rf_carrier_off
+000024ac T rf_tx_packet
+000027c4 T rf_tx_tdma_packet
+00002ab4 T rf_addr_decode_set_my_mac
+00002b18 T rf_security_set_key
+00002ce6 T rf_set_rx
+00002d1c T rf_set_channel
+00002d22 T rf_init
+00002eb6 T nrk_uart_rx_signal_get
+00002eba T nrk_uart_data_ready
+00002ede T getc1
+00002ef6 T nrk_setup_ports
+00002f26 T PORT_INIT
+00002f50 T nrk_gpio_set
+0000303e T nrk_gpio_clr
+0000313a T nrk_gpio_get
+0000319e T nrk_gpio_toggle
+00003396 T nrk_gpio_direction
+0000358c T nrk_get_button
+000035a0 T nrk_led_toggle
+000035d4 T nrk_led_clr
+00003608 T nrk_led_set
+0000363c T nrk_gpio_pullups
+00003650 T putc0
+0000366a T putc1
+0000367a T setup_uart0
+000036a4 T setup_uart1
+000036ce T getc0
+000036e6 T nrk_setup_uart
+0000374c T nrk_kprintf
+00003772 T halWait
+00003780 T write_eeprom_current_image_checksum
+00003790 T write_eeprom_aes_key
+000037be T write_eeprom_load_img_pages
+000037ce T nrk_eeprom_write_byte
+000037d4 T read_eeprom_current_image_checksum
+000037ee T read_eeprom_aes_key
+0000381c T read_eeprom_load_img_pages
+00003836 T read_eeprom_channel
+00003850 T read_eeprom_mac_address
+000038b2 T nrk_eeprom_read_byte
+000038b8 T nrk_int_disable
+000038bc T nrk_int_enable
+000038c0 T nrk_halt
+000038c4 T nrk_version
+000038ca T _nrk_timer_tick
+000038d0 T nrk_TCB_init
+00003b1c T nrk_start
+00003bd6 T nrk_init
+00003cea T _nrk_errno_set
+00003cf6 T nrk_errno_get
+00003d02 T nrk_error_get
+00003d1a T nrk_error_print
+00003e70 T nrk_kernel_error_add
+00003e7e T nrk_error_add
+00003e96 T nrk_stack_check_pid
+00003eda T dump_stack_info
+0000408e T nrk_stack_check
+000040d4 T nrk_signal_create
+00004146 T nrk_signal_get_registered_mask
+00004158 T nrk_signal_unregister
+000041da T nrk_signal_register
+00004248 T nrk_sem_create
+0000424e T nrk_get_resource_index
+0000425c T nrk_sem_delete
+00004286 T nrk_sem_query
+0000429e T nrk_sem_post
+00004314 T nrk_event_signal
+000043ee T nrk_signal_delete
+00004506 T nrk_sem_pend
+00004572 T nrk_event_wait
+000045ec T nrk_get_high_ready_task_ID
+000045f8 T nrk_print_readyQ
+0000460e T nrk_add_to_readyQ
+00004772 T nrk_rem_from_readyQ
+00004830 T nrk_get_pid
+0000483c T _nrk_wait_for_scheduler
+00004850 T nrk_wait
+00004908 T nrk_wait_until
+000049b4 T nrk_wait_until_nw
+00004a00 T nrk_set_next_wakeup
+00004a78 T nrk_wait_until_ticks
+00004acc T nrk_wait_ticks
+00004b38 T nrk_wait_until_next_n_periods
+00004b9c T nrk_wait_until_next_period
+00004bf2 T nrk_terminate_task
+00004c14 T nrk_activate_task
+00004cbc T nrk_time_sub
+00004dd4 T nrk_time_add
00004ec6 T nrk_time_compact_nanos
-00004f0a T nrk_time_add
-00004fc4 T nrk_time_set
-00004fe6 T _nrk_time_to_ticks
-000050ea T _nrk_ticks_to_time
-000051a2 T _nrk_time_to_ticks_long
-000052b2 T nrk_time_get
-00005368 T nrk_idle_task
-000053b0 T _nrk_scheduler
-000057a0 T nrk_spin_wait_us
-000057ae T _nrk_high_speed_timer_stop
-000057b4 T _nrk_high_speed_timer_start
-000057bc T _nrk_high_speed_timer_reset
-000057cc T _nrk_high_speed_timer_get
-00005802 T _nrk_os_timer_stop
-00005818 T _nrk_os_timer_set
-0000581e T _nrk_os_timer_start
-00005830 T _nrk_os_timer_reset
-00005844 T _nrk_get_next_wakeup
-0000584e T _nrk_set_next_wakeup
-00005856 T nrk_timer_int_stop
-00005864 T nrk_timer_int_reset
-0000587c T nrk_timer_int_read
-00005890 T nrk_timer_int_start
-000058a6 T nrk_timer_int_configure
-0000592c T _nrk_os_timer_get
-00005934 T __vector_13
-00005934 T __vector_15
-0000599a T __vector_17
-000059ae T __vector_32
-00005a0a T __vector_default
-00005a36 T nrk_high_speed_timer_wait
-00005ac2 T _nrk_setup_timer
-00005b38 T nrk_ext_int_enable
-00005bc6 T nrk_ext_int_disable
-00005c50 T nrk_ext_int_configure
-00005d72 T __vector_2
-00005dce T __vector_1
-00005e2a T __vector_9
-00005e86 T _nrk_startup_ok
-00005e9a T update_watchdog
-00005e9c T nrk_watchdog_check
-00005eae T nrk_watchdog_reset
-00005eb2 T nrk_watchdog_disable
-00005ed0 T nrk_watchdog_enable
-00005ef0 T nrk_battery_save
-00005ef2 T nrk_sleep
-00005f0a T nrk_idle
-00005f20 T nrk_task_set_entry_function
-00005f28 T nrk_task_stk_init
-00005fa4 T nrk_stack_pointer_init
-00005fc6 T nrk_stack_pointer_restore
-00005fd8 T nrk_target_start
-00005fe2 T nrk_task_set_stk
-00006020 T nrk_start_high_ready_task
-00006076 T vfprintf
-000063c2 t do_rand
-0000647a T rand_r
-00006480 T rand
-0000648a T srand
-000064a0 T strlen_P
-000064b2 T fdevopen
-00006552 T fputc
-000065ac T printf
-000065ec T puts
-00006652 T calloc
-0000668a T malloc
-000067d0 T free
-0000687c T memset
-0000688a T __mulsi3
-000068c8 T __udivmodhi4
-000068d0 t __udivmodhi4_loop
-000068de t __udivmodhi4_ep
-000068f0 T __divmodhi4
-000068f0 T _div
-00006904 t __divmodhi4_neg2
-0000690a t __divmodhi4_exit
-0000690c t __divmodhi4_neg1
-00006916 T __udivmodsi4
-00006922 t __udivmodsi4_loop
-0000693c t __udivmodsi4_ep
-0000695a T __eeprom_read_byte_1F2021
-0000696a T __eeprom_write_byte_1F2021
-00006982 T __divmodsi4
-00006996 t __divmodsi4_neg2
-000069a4 t __divmodsi4_exit
-000069a6 t __divmodsi4_neg1
-000069b8 t __stop_program
-000069b8 T _exit
-000069b8 W exit
-000069ba A __data_load_start
-000069ba T _etext
-00006aca A __data_load_end
+00004f0a T nrk_time_set
+00004f2c T _nrk_time_to_ticks
+00005030 T _nrk_ticks_to_time
+000050a4 T _nrk_time_to_ticks_long
+000051bc T nrk_time_get
+00005272 T nrk_idle_task
+000052be T _nrk_scheduler
+000056b4 T nrk_spin_wait_us
+000056c2 T _nrk_setup_timer
+0000572c T _nrk_high_speed_timer_stop
+00005732 T _nrk_high_speed_timer_start
+0000573a T _nrk_high_speed_timer_reset
+0000574a T nrk_high_speed_timer_wait
+000057c4 T _nrk_high_speed_timer_get
+000057ea T _nrk_os_timer_stop
+00005800 T _nrk_os_timer_set
+00005806 T _nrk_os_timer_start
+00005818 T _nrk_os_timer_reset
+0000582c T _nrk_get_next_wakeup
+00005834 T _nrk_set_next_wakeup
+0000583c T nrk_timer_int_stop
+00005848 T nrk_timer_int_reset
+0000585c T nrk_timer_int_read
+00005872 T nrk_timer_int_start
+00005884 T nrk_timer_int_configure
+00005900 T _nrk_os_timer_get
+00005906 T __vector_13
+00005906 T __vector_15
+0000596c T __vector_17
+00005980 T __vector_32
+000059e4 T __vector_default
+00005a14 T nrk_ext_int_enable
+00005a9c T nrk_ext_int_disable
+00005b24 T nrk_ext_int_configure
+00005c3e T __vector_1
+00005ca2 T __vector_9
+00005d06 T _nrk_startup_ok
+00005d16 T update_watchdog
+00005d18 T nrk_watchdog_check
+00005d26 T nrk_watchdog_reset
+00005d2a T nrk_watchdog_enable
+00005d4a T nrk_watchdog_disable
+00005d68 T nrk_battery_save
+00005d6a T nrk_sleep
+00005d82 T nrk_idle
+00005d98 T nrk_task_set_entry_function
+00005da0 T nrk_task_stk_init
+00005df6 T nrk_stack_pointer_init
+00005e14 T nrk_stack_pointer_restore
+00005e22 T nrk_target_start
+00005e2c T nrk_task_set_stk
+00005e68 T nrk_start_high_ready_task
+00005ebe T vfprintf
+0000613e T __mulsi3
+0000617c T __udivmodhi4
+00006184 t __udivmodhi4_loop
+00006192 t __udivmodhi4_ep
+000061a4 T __divmodhi4
+000061a4 T _div
+000061b8 t __divmodhi4_neg2
+000061be t __divmodhi4_exit
+000061c0 t __divmodhi4_neg1
+000061ca T __udivmodsi4
+000061d6 t __udivmodsi4_loop
+000061f0 t __udivmodsi4_ep
+0000620e t do_rand
+000062be T rand_r
+000062c4 T rand
+000062ce T srand
+000062e4 T strchr_P
+000062fa T fdevopen
+00006392 T fputc
+000063ea T printf
+0000640e T puts
+00006478 T __ultoa_invert
+00006534 T __eerd_byte_m1281
+00006544 T __eewr_byte_m1281
+00006546 T __eewr_r18_m1281
+00006560 T calloc
+00006598 T malloc
+000066f2 T free
+000067a2 T memset
+000067b0 T __divmodsi4
+000067c4 t __divmodsi4_neg2
+000067d2 t __divmodsi4_exit
+000067d4 t __divmodsi4_neg1
+000067e6 T _exit
+000067e6 W exit
+000067e8 t __stop_program
+000067ea A __data_load_start
+000067ea T _etext
+00006908 A __data_load_end
00800200 D __data_start
-00800293 D NRK_DEBUG_0
-00800294 D NRK_DEBUG_1
-00800295 D NRK_BUTTON
-00800296 D NRK_SPI_SS
-00800297 D NRK_SCK
-00800298 D NRK_MOSI
-00800299 D NRK_MISO
-0080029a D NRK_GPIO26
-0080029b D NRK_MMC_11
-0080029c D NRK_MMC_10
-0080029d D NRK_MMC_9
-0080029e D NRK_DEBUG_2
-0080029f D NRK_DEBUG_3
-008002a0 D NRK_UART1_RXD
-008002a1 D NRK_UART1_TXD
-008002a2 D NRK_CCA
-008002a3 D NRK_SFD
-008002a4 D NRK_UART0_RXD
-008002a5 D NRK_UART0_TXD
-008002a6 D NRK_LED_0
-008002a7 D NRK_LED_1
-008002a8 D NRK_LED_2
-008002a9 D NRK_LED_3
-008002aa D NRK_GPIO34
-008002ab D NRK_FIFOP
-008002ac D NRK_ADC_INPUT_0
-008002ad D NRK_ADC_INPUT_1
-008002ae D NRK_ADC_INPUT_2
-008002af D NRK_ADC_INPUT_3
-008002b0 D NRK_ADC_INPUT_4
-008002b1 D NRK_ADC_INPUT_5
-008002b2 D NRK_ADC_INPUT_6
-008002b3 D NRK_ADC_INPUT_7
-00800305 d next
-00800309 D __malloc_margin
-0080030b D __malloc_heap_start
-0080030d D __malloc_heap_end
-00800310 B __bss_start
-00800310 D __data_end
-00800310 D _edata
-00800310 B last_slot_time
-00800318 B rtl_param
-00800321 B cycle_callback
-00800323 B _rtl_ready
-00800324 B rtl_task_stack
-008003a4 B rtl_tx_data_ready
-008003a8 B error_task
-008003a9 B _rtl_sync_ok
-008003aa B _rtl_contention_slots
-008003ab B tx_callback
-008003ad B rtl_task
-008003d0 B rtl_tdma_tx_mask
-008003d4 B TaskOne
-008003f7 B state
-008003f8 B rtl_tsync_tx
-008003ff B rtl_rfRxInfo
-00800408 B _rtl_time_token_status
-00800409 B rtl_abs_tx_slot
-0080040b B _nrk_signal_list
-0080040f B num_players
-00800410 B _rtl_contention_pending
-00800411 B rx_buf
-00800485 B sync_pkt
-00800486 B rtl_rx_slot
-00800487 B Stack1
-00800507 B rtl_tdma_rx_mask
-0080050b B nrk_kernel_stk_ptr
-0080050d B player_rx
-00800511 B rx_callback
-00800513 B rtl_rx_data_ready
-00800514 B tx_buf
-00800588 B rtl_abs_tx_ready
-00800589 B slot_callback
-0080058b B rtl_node_mode
-0080058c B abs_callback
-0080058e B rtl_rfTxInfo
-00800595 B error_num
-00800596 B tx_len
-00800597 B last_slot
-00800599 B rtl_rx_buf
-0080060d B nrk_idle_task_stk
-0080068d B player_tx
-00800691 B _rtl_time_token
-00800692 B rtl_tx_info
-008006f5 B rtl_tsync_buf
-008006f8 B app_timer0_callback
-008006fa B tsync_log
-00800702 B rtl_rx_pkt_signal
-00800703 B global_cycle
-00800705 B tsync_delay
-0080070d B slot_start_time
-0080070f B rtl_abs_wakeup
-00800717 B global_slot
-00800719 B _nrk_time_trigger
-0080071a B _dbg_index
-0080071b B last_sync_slot
-0080071d B prev_offset
-0080071f B pkt_log
-00800727 B rtl_drift_rate
-00800729 B current_global_slot
-0080072b B app_timer0_prescale
-0080072c B _tsync_index
-0080072d B _nrk_prev_timer_val
-0080072e B rtl_sched
-0080073e B rtl_sched_cache
-0080075e B rtl_tx_done_signal
-0080075f B rx_ctr
-00800763 B radio_sem
-00800765 B security_enable
-00800766 B mdmctrl0
-00800768 B rfSettings
-00800771 B tmp_blah
-00800773 B auto_ack_enable
-00800774 B last_pkt_encrypted
-00800775 B tx_ctr
-00800779 B rx_ready
-0080077a B _free_node
-0080077c B nrk_task_TCB
-008007df B next_next_wakeup
-008007e1 B nrk_sem_list
-008007e4 B nrk_task_init_cnt
-008007e5 B nrk_wakeup_signal
-008007e6 B nrk_high_ready_TCB
-008007e8 B nrk_cur_task_prio
-008007e9 B _nrk_cpu_state
-008007ea B _head_node
-008007ec B nrk_system_time
-008007f4 B _nrk_resource_cnt
-008007f5 B nrk_cur_task_TCB
-008007f7 B nrk_high_ready_prio
-008007f8 B _nrk_readyQ
-0080080c B ext_int1_callback
-0080080e B ext_int0_callback
-00800810 B ext_int2_callback
-00800812 B pc_int0_callback
-00800814 B __iob
-0080081a B __brkval
-0080081c B __flp
-0080081e B __bss_end
-0080081e A __heap_start
-0080081e A _end
-00810000 A __eeprom_end
+008002a1 D NRK_DEBUG_0
+008002a2 D NRK_DEBUG_1
+008002a3 D NRK_BUTTON
+008002a4 D NRK_SPI_SS
+008002a5 D NRK_SCK
+008002a6 D NRK_MOSI
+008002a7 D NRK_MISO
+008002a8 D NRK_GPIO26
+008002a9 D NRK_MMC_11
+008002aa D NRK_MMC_10
+008002ab D NRK_MMC_9
+008002ac D NRK_DEBUG_2
+008002ad D NRK_DEBUG_3
+008002ae D NRK_UART1_RXD
+008002af D NRK_UART1_TXD
+008002b0 D NRK_CCA
+008002b1 D NRK_SFD
+008002b2 D NRK_UART0_RXD
+008002b3 D NRK_UART0_TXD
+008002b4 D NRK_LED_0
+008002b5 D NRK_LED_1
+008002b6 D NRK_LED_2
+008002b7 D NRK_LED_3
+008002b8 D NRK_GPIO34
+008002b9 D NRK_FIFOP
+008002ba D NRK_ADC_INPUT_0
+008002bb D NRK_ADC_INPUT_1
+008002bc D NRK_ADC_INPUT_2
+008002bd D NRK_ADC_INPUT_3
+008002be D NRK_ADC_INPUT_4
+008002bf D NRK_ADC_INPUT_5
+008002c0 D NRK_ADC_INPUT_6
+008002c1 D NRK_ADC_INPUT_7
+00800313 d next
+00800317 D __malloc_margin
+00800319 D __malloc_heap_start
+0080031b D __malloc_heap_end
+0080031e B __bss_start
+0080031e D __data_end
+0080031e D _edata
+0080031e B last_slot_time
+00800326 B rtl_param
+0080032f B cycle_callback
+00800331 B _rtl_ready
+00800332 B rtl_task_stack
+008003b2 B rtl_tx_data_ready
+008003b6 B error_task
+008003b7 B _rtl_sync_ok
+008003b8 B _rtl_contention_slots
+008003b9 B tx_callback
+008003bb B rtl_task
+008003de B rtl_tdma_tx_mask
+008003e2 B TaskOne
+00800405 B state
+00800406 B rtl_tsync_tx
+0080040d B rtl_rfRxInfo
+00800416 B _rtl_time_token_status
+00800417 B rtl_abs_tx_slot
+00800419 B _nrk_signal_list
+0080041d B num_players
+0080041e B _rtl_contention_pending
+0080041f B rx_buf
+00800493 B sync_pkt
+00800494 B rtl_rx_slot
+00800495 B Stack1
+00800515 B rtl_tdma_rx_mask
+00800519 B nrk_kernel_stk_ptr
+0080051b B player_rx
+0080051f B rx_callback
+00800521 B rtl_rx_data_ready
+00800522 B tx_buf
+00800596 B rtl_abs_tx_ready
+00800597 B slot_callback
+00800599 B rtl_node_mode
+0080059a B abs_callback
+0080059c B rtl_rfTxInfo
+008005a3 B error_num
+008005a4 B tx_len
+008005a5 B last_slot
+008005a7 B rtl_rx_buf
+0080061b B nrk_idle_task_stk
+0080069b B player_tx
+0080069f B _rtl_time_token
+008006a0 B rtl_tx_info
+00800703 B rtl_tsync_buf
+00800706 B app_timer0_callback
+00800708 B tsync_log
+00800710 B rtl_rx_pkt_signal
+00800711 B global_cycle
+00800713 B tsync_delay
+0080071b B slot_start_time
+0080071d B rtl_abs_wakeup
+00800725 B global_slot
+00800727 B _nrk_time_trigger
+00800728 B _dbg_index
+00800729 B last_sync_slot
+0080072b B prev_offset
+0080072d B pkt_log
+00800735 B rtl_drift_rate
+00800737 B current_global_slot
+00800739 B app_timer0_prescale
+0080073a B _tsync_index
+0080073b B _nrk_prev_timer_val
+0080073c B rtl_sched
+0080074c B rtl_sched_cache
+0080076c B rtl_tx_done_signal
+0080076d B rx_ctr
+00800771 B radio_sem
+00800773 B security_enable
+00800774 B mdmctrl0
+00800776 B rfSettings
+0080077f B tmp_blah
+00800781 B auto_ack_enable
+00800782 B last_pkt_encrypted
+00800783 B tx_ctr
+00800787 B rx_ready
***The diff for this file has been truncated for email.***
=======================================
--- /trunk/monome/controller_base_comm/base_station/makefile Sat Dec 11
12:36:09 2010
+++ /trunk/monome/controller_base_comm/base_station/makefile Tue Dec 21
13:38:34 2010
@@ -6,8 +6,8 @@
TARGET = main
# Set the Port that you programmer is connected to
- PROGRAMMING_PORT = /dev/tty.usbserial-0000101DB # Default FireFly
serial port
-# PROGRAMMING_PORT = /dev/ttyUSB0 # Default micaZ serial port
+# PROGRAMMING_PORT = /dev/tty.usbserial-0000101DB # Default FireFly
serial port
+ PROGRAMMING_PORT = /dev/ttyUSB1 # Default micaZ serial port
# Set this such that the nano-RK directory is the base path
ROOT_DIR = ../../../../..