Changeset 38
- Timestamp:
- 04/13/2007 06:02:23 PM (5 years ago)
- Location:
- nano-RK
- Files:
-
- 7 added
- 15 edited
-
include/common.mk (modified) (1 diff)
-
projects/basic_bmac/main.c (modified) (1 diff)
-
projects/basic_bmac/makefile (modified) (1 diff)
-
projects/basic_mmc/makefile (modified) (1 diff)
-
projects/basic_mmc/mmc.c (modified) (1 diff)
-
projects/basic_rf/rf_rx/makefile (modified) (1 diff)
-
projects/basic_rf/rf_tx/main.c (modified) (1 diff)
-
projects/basic_rf/rf_tx/makefile (modified) (1 diff)
-
projects/basic_slip (added)
-
projects/basic_slip/main.c (added)
-
projects/basic_slip/makefile (added)
-
projects/basic_slip/nrk_cfg.h (added)
-
projects/basic_tasks/main.c (modified) (6 diffs)
-
projects/basic_tasks/makefile (modified) (1 diff)
-
src/kernel/include/nrk_events.h (modified) (1 diff)
-
src/net/bmac/bmac.d (modified) (1 diff)
-
src/net/bmac/bmac.lst (modified) (2 diffs)
-
src/net/slip (added)
-
src/net/slip/slip.c (added)
-
src/net/slip/slip.h (added)
-
src/platform/firefly2_2/include/hal_firefly2_2.h (modified) (2 diffs)
-
src/radio/cc2420/source/basic_rf.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
nano-RK/include/common.mk
r29 r38 173 173 174 174 ifeq ($(PLATFORM_TYPE),firefly2_2) 175 AVRDUDE_FLAGS = -b115200 - p atmega128 -P $(PROGRAMMING_PORT) -c $(AVRDUDE_PROGRAMMER) -F175 AVRDUDE_FLAGS = -b115200 -F -p atmega128 -P $(PROGRAMMING_PORT) -c $(AVRDUDE_PROGRAMMER) 176 176 else 177 177 AVRDUDE_FLAGS = -b115200 -p $(MCU) -P $(PROGRAMMING_PORT) -c $(AVRDUDE_PROGRAMMER) -
nano-RK/projects/basic_bmac/main.c
r14 r38 56 56 int8_t rssi,val; 57 57 uint8_t *local_rx_buf; 58 uint8_t spiStatusByte; 58 59 59 60 printf( "rx_task PID=%d\r\n",nrk_get_pid()); 61 /* SET_VREG_ACTIVE(); 62 nrk_wait_until_next_period(); 63 // halWait(1000); 64 SET_RESET_ACTIVE(); 65 halWait(1); 66 SET_RESET_INACTIVE(); 67 // halWait(100); 68 nrk_wait_until_next_period(); 69 //DISABLE_GLOBAL_INT(); 70 // FASTSPI_STROBE(CC2420_SXOSCON); 71 // ENABLE_GLOBAL_INT(); 72 // init bmac on channel 25 73 printf( "SPCR= 0x%x\r\n",SPCR ); 74 printf( "SPSR= 0x%x\r\n",SPSR ); 75 76 do { 77 DISABLE_GLOBAL_INT(); 78 SPI_ENABLE(); 79 FASTSPI_TX_ADDR(CC2420_SNOP); 80 spiStatusByte = SPDR; 81 SPI_DISABLE(); 60 82 61 // init bmac on channel 25 83 ENABLE_GLOBAL_INT(); 84 } while (!(spiStatusByte & (BM(CC2420_XOSC16M_STABLE)))); 85 86 87 printf( "1\r\n" ); 88 */ 89 nrk_wait_until_next_period(); 62 90 bmac_init(25); 63 91 // This sets the next RX buffer. -
nano-RK/projects/basic_bmac/makefile
r14 r38 1 1 # Platform name cc2420DK, firefly, micaZ 2 PLATFORM = firefly2 2 PLATFORM = firefly2_2 3 3 4 4 -
nano-RK/projects/basic_mmc/makefile
r14 r38 1 1 # Platform name cc2420DK, firefly, micaZ 2 PLATFORM = firefly2 2 PLATFORM = firefly2_2 3 3 4 4 -
nano-RK/projects/basic_mmc/mmc.c
r1 r38 225 225 226 226 227 SPI_DDR |= (1<<0); // assume it's bit0 (mega128, portB and others)227 // SPI_DDR |= (1<<0); // assume it's bit0 (mega128, portB and others) 228 228 229 229 SPCR = (1<<MSTR)|(1<<SPE); // enable SPI interface 230 230 SPSR = 1; // set double speed 231 231 232 232 233 for(i=0;i<10;i++) // send 80 clocks while card power stabilizes -
nano-RK/projects/basic_rf/rf_rx/makefile
r36 r38 7 7 8 8 # Set the Port that you programmer is connected to 9 PROGRAMMING_PORT = /dev/ttyUSB1 # programmer connected to serial device 9 PROGRAMMING_PORT = /dev/ttyUSB1 10 # programmer connected to serial device 10 11 11 12 # Set this such that the nano-RK directory is the base path -
nano-RK/projects/basic_rf/rf_tx/main.c
r1 r38 36 36 rfRxInfo.pPayload = rx_buf; 37 37 rfRxInfo.max_length = RF_MAX_PAYLOAD_SIZE; 38 rf_init (&rfRxInfo, 10, 0x2420, 0x1215);38 rf_init (&rfRxInfo, 25, 0x2420, 0x1215); 39 39 cnt=0; 40 40 while(1) -
nano-RK/projects/basic_rf/rf_tx/makefile
r37 r38 7 7 8 8 # Set the Port that you programmer is connected to 9 PROGRAMMING_PORT = /dev/ttyUSB1 # programmer connected to serial device 9 PROGRAMMING_PORT = /dev/ttyUSB1 10 # programmer connected to serial device 10 11 11 12 # Set this such that the nano-RK directory is the base path -
nano-RK/projects/basic_tasks/main.c
r32 r38 39 39 nrk_init(); 40 40 41 nrk_ gpio_set(NRK_YLED);42 nrk_ gpio_clr(NRK_BLED);43 nrk_ gpio_clr(NRK_GLED);44 nrk_ gpio_clr(NRK_RLED);41 nrk_clr_led(ORANGE_LED); 42 nrk_clr_led(BLUE_LED); 43 nrk_clr_led(GREEN_LED); 44 nrk_clr_led(RED_LED); 45 45 46 46 nrk_time_set(0,0); … … 61 61 cnt=0; 62 62 while(1) { 63 nrk_ gpio_toggle(NRK_YLED);63 nrk_set_led(ORANGE_LED); 64 64 printf( "Task1 cnt=%d\r\n",cnt ); 65 65 nrk_wait_until_next_period(); 66 nrk_clr_led(ORANGE_LED); 67 nrk_wait_until_next_period(); 68 cnt++; 66 69 } 67 70 } … … 73 76 cnt=0; 74 77 while(1) { 75 nrk_ gpio_toggle(NRK_BLED);78 nrk_set_led(BLUE_LED); 76 79 printf( "Task2 cnt=%d\r\n",cnt ); 77 80 nrk_wait_until_next_period(); 81 nrk_clr_led(BLUE_LED); 82 nrk_wait_until_next_period(); 83 cnt++; 78 84 } 79 85 } … … 86 92 cnt=0; 87 93 while(1) { 88 nrk_ gpio_toggle(NRK_GLED);94 nrk_set_led(GREEN_LED); 89 95 printf( "Task3 cnt=%d\r\n",cnt ); 90 96 nrk_wait_until_next_period(); 97 nrk_clr_led(GREEN_LED); 98 nrk_wait_until_next_period(); 99 cnt++; 91 100 } 92 101 } … … 99 108 cnt=0; 100 109 while(1) { 101 nrk_ gpio_toggle(NRK_RLED);110 nrk_set_led(RED_LED); 102 111 printf( "Task4 cnt=%d\r\n",cnt ); 103 112 nrk_wait_until_next_period(); 113 nrk_clr_led(RED_LED); 114 nrk_wait_until_next_period(); 115 cnt++; 104 116 } 105 117 } … … 116 128 TaskOne.SchType = PREEMPTIVE; 117 129 TaskOne.period.secs = 0; 118 TaskOne.period.nano_secs = 50*NANOS_PER_MS;130 TaskOne.period.nano_secs = 250*NANOS_PER_MS; 119 131 TaskOne.cpu_reserve.secs = 0; 120 132 TaskOne.cpu_reserve.nano_secs = 50*NANOS_PER_MS; -
nano-RK/projects/basic_tasks/makefile
r21 r38 1 1 # Platform name cc2420DK, firefly, micaZ, firefly2, firefly2_2 2 PLATFORM = firefly2 2 PLATFORM = firefly2 3 3 4 4 -
nano-RK/src/kernel/include/nrk_events.h
r19 r38 41 41 uint8_t nrk_get_resource_id(uint8_t *resrc); 42 42 uint32_t nrk_event_signal(uint32_t event_num); 43 int8_t nrk_set_task_timeout(nrk_time_t t);43 //int8_t nrk_set_task_timeout(nrk_time_t t); 44 44 uint32_t _nrk_wait_for_event(uint32_t event_num); 45 45 uint32_t nrk_event_wait(uint32_t event_num); -
nano-RK/src/net/bmac/bmac.d
r21 r38 1 bmac.o bmac.d : ../..//src/net/bmac/bmac.c \ 2 ../..//src/platform/micaZ/include/include.h \ 3 ../..//src/platform/micaZ/include/hal.h \ 4 ../..//src/platform/micaZ/include/hal_micaZ.h \ 5 ../..//src/radio/cc2420/include/hal_cc2420.h \ 6 ../..//src/radio/cc2420/include/basic_rf.h \ 7 ../..//src/platform/include/ulib.h ../..//src/kernel/include/nrk.h \ 8 ../..//src/kernel/include/nrk_cpu.h nrk_cfg.h \ 9 ../..//src/kernel/include/nrk_time.h \ 10 ../..//src/platform/micaZ/include/nrk_platform_time.h \ 11 ../..//src/kernel/include/nrk_task.h \ 12 ../..//src/kernel/include/nrk_events.h \ 13 ../..//src/kernel/hal/include/nrk_timer.h \ 14 ../..//src/kernel/include/nrk_error.h ../..//src/net/bmac/bmac.h 1 bmac.o bmac.d : ../../src/net/bmac/bmac.c \ 2 ../../src/platform/firefly2_2/include/include.h \ 3 ../../src/platform/firefly2_2/include/hal.h \ 4 ../../src/platform/firefly2_2/include/hal_firefly2_2.h \ 5 ../../src/radio/cc2420/include/hal_cc2420.h \ 6 ../../src/radio/cc2420/include/basic_rf.h \ 7 ../../src/platform/include/ulib.h \ 8 ../../src/platform/firefly2_2/include/nrk_pin_define.h \ 9 ../../src/kernel/include/nrk.h ../../src/kernel/include/nrk_cpu.h \ 10 nrk_cfg.h ../../src/kernel/include/nrk_time.h \ 11 ../../src/platform/firefly2_2/include/nrk_platform_time.h \ 12 ../../src/kernel/include/nrk_task.h \ 13 ../../src/kernel/include/nrk_events.h \ 14 ../../src/kernel/hal/include/nrk_timer.h \ 15 ../../src/kernel/include/nrk_error.h ../../src/net/bmac/bmac.h -
nano-RK/src/net/bmac/bmac.lst
r21 r38 1 1 1 .file "bmac.c" 2 2 .arch atmega128 3 3 __SREG__ = 0x3f 4 4 __SP_H__ = 0x3e 5 5 __SP_L__ = 0x3d 6 6 __tmp_reg__ = 0 7 7 __zero_reg__ = 1 8 8 .global __do_copy_data 9 9 .global __do_clear_bss 10 12 .text 11 13 .Ltext0: 12 130 .global rf_rx_callback 13 132 rf_rx_callback: 14 133 .stabd 46,0,0 15 1:../..//src/net/bmac/bmac.c **** #include <include.h> 16 2:../..//src/net/bmac/bmac.c **** #include <ulib.h> 17 3:../..//src/net/bmac/bmac.c **** #include <avr/sleep.h> 18 4:../..//src/net/bmac/bmac.c **** #include <avr/wdt.h> 19 5:../..//src/net/bmac/bmac.c **** #include <avr/eeprom.h> 20 6:../..//src/net/bmac/bmac.c **** #include <stdio.h> 21 7:../..//src/net/bmac/bmac.c **** #include <avr/interrupt.h> 22 8:../..//src/net/bmac/bmac.c **** #include <nrk.h> 23 9:../..//src/net/bmac/bmac.c **** #include <nrk_events.h> 24 10:../..//src/net/bmac/bmac.c **** #include <nrk_timer.h> 25 11:../..//src/net/bmac/bmac.c **** #include <nrk_error.h> 26 12:../..//src/net/bmac/bmac.c **** #include <bmac.h> 27 13:../..//src/net/bmac/bmac.c **** 28 14:../..//src/net/bmac/bmac.c **** //#define DEBUG 29 15:../..//src/net/bmac/bmac.c **** 30 16:../..//src/net/bmac/bmac.c **** uint8_t tx_data_ready; 31 17:../..//src/net/bmac/bmac.c **** uint8_t rx_buf_empty; 32 18:../..//src/net/bmac/bmac.c **** uint8_t bmac_running; 33 19:../..//src/net/bmac/bmac.c **** 34 20:../..//src/net/bmac/bmac.c **** /** 35 21:../..//src/net/bmac/bmac.c **** * This is a callback if you require immediate response to a packet 36 22:../..//src/net/bmac/bmac.c **** */ 37 23:../..//src/net/bmac/bmac.c **** RF_RX_INFO *rf_rx_callback (RF_RX_INFO * pRRI) 38 24:../..//src/net/bmac/bmac.c **** { 39 135 .LM0: 2 2 __SREG__ = 0x3f 3 3 __SP_H__ = 0x3e 4 4 __SP_L__ = 0x3d 5 5 __tmp_reg__ = 0 6 6 __zero_reg__ = 1 7 7 .global __do_copy_data 8 8 .global __do_clear_bss 9 11 .text 10 12 .Ltext0: 11 129 .global rf_rx_callback 12 131 rf_rx_callback: 13 132 .stabd 46,0,0 14 1:../../src/net/bmac/bmac.c **** /***************************************************************************** 15 2:../../src/net/bmac/bmac.c **** * Copyright (c) 2007, Real-Time and Multimedia Lab, Carnegie Mellon University 16 3:../../src/net/bmac/bmac.c **** * All rights reserved. 17 4:../../src/net/bmac/bmac.c **** * 18 5:../../src/net/bmac/bmac.c **** * Redistribution and use in source and binary forms, with or without 19 6:../../src/net/bmac/bmac.c **** * modification, are permitted provided that the following conditions are met: 20 7:../../src/net/bmac/bmac.c **** * * Redistributions of source code must retain the above copyright 21 8:../../src/net/bmac/bmac.c **** * notice, this list of conditions and the following disclaimer. 22 9:../../src/net/bmac/bmac.c **** * * Redistributions in binary form must reproduce the above copyright 23 10:../../src/net/bmac/bmac.c **** * notice, this list of conditions and the following disclaimer in the 24 11:../../src/net/bmac/bmac.c **** * documentation and/or other materials provided with the distribution. 25 12:../../src/net/bmac/bmac.c **** * * Neither the name of Carnegie Mellon University nor the 26 13:../../src/net/bmac/bmac.c **** * names of its contributors may be used to endorse or promote products 27 14:../../src/net/bmac/bmac.c **** * derived from this software without specific prior written permission. 28 15:../../src/net/bmac/bmac.c **** * 29 16:../../src/net/bmac/bmac.c **** * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND ANY 30 17:../../src/net/bmac/bmac.c **** * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 31 18:../../src/net/bmac/bmac.c **** * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 32 19:../../src/net/bmac/bmac.c **** * DISCLAIMED. IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE FOR ANY 33 20:../../src/net/bmac/bmac.c **** * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 34 21:../../src/net/bmac/bmac.c **** * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 35 22:../../src/net/bmac/bmac.c **** * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 36 23:../../src/net/bmac/bmac.c **** * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 37 24:../../src/net/bmac/bmac.c **** * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 38 25:../../src/net/bmac/bmac.c **** * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 39 26:../../src/net/bmac/bmac.c **** * 40 27:../../src/net/bmac/bmac.c **** * Contributing Authors: 41 28:../../src/net/bmac/bmac.c **** * Anthony Rowe 42 29:../../src/net/bmac/bmac.c **** *******************************************************************************/ 43 30:../../src/net/bmac/bmac.c **** 44 31:../../src/net/bmac/bmac.c **** 45 32:../../src/net/bmac/bmac.c **** 46 33:../../src/net/bmac/bmac.c **** #include <include.h> 47 34:../../src/net/bmac/bmac.c **** #include <ulib.h> 48 35:../../src/net/bmac/bmac.c **** #include <avr/sleep.h> 49 36:../../src/net/bmac/bmac.c **** #include <avr/wdt.h> 50 37:../../src/net/bmac/bmac.c **** #include <avr/eeprom.h> 51 38:../../src/net/bmac/bmac.c **** #include <stdio.h> 52 39:../../src/net/bmac/bmac.c **** #include <avr/interrupt.h> 53 40:../../src/net/bmac/bmac.c **** #include <nrk.h> 54 41:../../src/net/bmac/bmac.c **** #include <nrk_events.h> 55 42:../../src/net/bmac/bmac.c **** #include <nrk_timer.h> 56 43:../../src/net/bmac/bmac.c **** #include <nrk_error.h> 57 44:../../src/net/bmac/bmac.c **** #include <bmac.h> 58 45:../../src/net/bmac/bmac.c **** 59 46:../../src/net/bmac/bmac.c **** //#define DEBUG 60 47:../../src/net/bmac/bmac.c **** 61 48:../../src/net/bmac/bmac.c **** uint8_t tx_data_ready; 62 49:../../src/net/bmac/bmac.c **** uint8_t rx_buf_empty; 63 50:../../src/net/bmac/bmac.c **** uint8_t bmac_running; 64 51:../../src/net/bmac/bmac.c **** 65 52:../../src/net/bmac/bmac.c **** /** 66 53:../../src/net/bmac/bmac.c **** * This is a callback if you require immediate response to a packet 67 54:../../src/net/bmac/bmac.c **** */ 68 55:../../src/net/bmac/bmac.c **** RF_RX_INFO *rf_rx_callback (RF_RX_INFO * pRRI) 69 56:../../src/net/bmac/bmac.c **** { 70 134 .LM0: 71 135 .LFBB1: 40 72 136 /* prologue: frame size=0 */ 41 73 137 /* prologue end (size=0) */ … … 44 76 140 /* epilogue end (size=1) */ 45 77 141 /* function rf_rx_callback size 1 (0) */ 46 143 .Lscope 0:78 143 .Lscope1: 47 79 145 .stabd 78,0,0 48 80 149 .global bmac_rx_pkt_set_buffer 49 81 151 bmac_rx_pkt_set_buffer: 50 82 152 .stabd 46,0,0 51 25:../..//src/net/bmac/bmac.c **** // Any code here gets called the instant a packet is received from the interrupt52 26:../..//src/net/bmac/bmac.c **** return pRRI;53 27:../..//src/net/bmac/bmac.c **** }54 28:../..//src/net/bmac/bmac.c ****55 29:../..//src/net/bmac/bmac.c ****56 30:../..//src/net/bmac/bmac.c **** int8_t bmac_wait_until_rx_packet()57 31:../..//src/net/bmac/bmac.c **** {58 32:../..//src/net/bmac/bmac.c **** uint32_t event;59 33:../..//src/net/bmac/bmac.c ****60 34:../..//src/net/bmac/bmac.c **** event=nrk_event_wait (SIG(BMAC_RX_PKT_EVENT));61 35:../..//src/net/bmac/bmac.c ****62 36:../..//src/net/bmac/bmac.c **** // Check if it was a time out instead of packet RX signal63 37:../..//src/net/bmac/bmac.c **** if(event & SIG(BMAC_RX_PKT_EVENT) == 0 ) return NRK_ERROR;64 38:../..//src/net/bmac/bmac.c **** else return NRK_OK;65 39:../..//src/net/bmac/bmac.c **** }66 40:../..//src/net/bmac/bmac.c ****67 41:../..//src/net/bmac/bmac.c **** int8_t bmac_rx_pkt_set_buffer(uint8_t *buf, uint8_t size)68 42:../..//src/net/bmac/bmac.c **** {83 57:../../src/net/bmac/bmac.c **** // Any code here gets called the instant a packet is received from the interrupt 84 58:../../src/net/bmac/bmac.c **** return pRRI; 85 59:../../src/net/bmac/bmac.c **** } 86 60:../../src/net/bmac/bmac.c **** 87 61:../../src/net/bmac/bmac.c **** 88 62:../../src/net/bmac/bmac.c **** int8_t bmac_wait_until_rx_packet() 89 63:../../src/net/bmac/bmac.c **** { 90 64:../../src/net/bmac/bmac.c **** uint32_t event; 91 65:../../src/net/bmac/bmac.c **** 92 66:../../src/net/bmac/bmac.c **** event=nrk_event_wait (SIG(BMAC_RX_PKT_EVENT)); 93 67:../../src/net/bmac/bmac.c **** 94 68:../../src/net/bmac/bmac.c **** // Check if it was a time out instead of packet RX signal 95 69:../../src/net/bmac/bmac.c **** if(event & SIG(BMAC_RX_PKT_EVENT) == 0 ) return NRK_ERROR; 96 70:../../src/net/bmac/bmac.c **** else return NRK_OK; 97 71:../../src/net/bmac/bmac.c **** } 98 72:../../src/net/bmac/bmac.c **** 99 73:../../src/net/bmac/bmac.c **** int8_t bmac_rx_pkt_set_buffer(uint8_t *buf, uint8_t size) 100 74:../../src/net/bmac/bmac.c **** { 69 101 154 .LM1: 70 155 /* prologue: frame size=0 */ 71 156 /* prologue end (size=0) */ 72 43:../..//src/net/bmac/bmac.c **** if(buf==NULL) return NRK_ERROR; 73 158 .LM2: 74 159 0002 0097 sbiw r24,0 75 160 0004 01F4 brne .L4 76 162 .LM3: 77 163 0006 8FEF ldi r24,lo8(-1) 78 164 0008 9FEF ldi r25,hi8(-1) 79 165 000a 0895 ret 80 166 .L4: 81 44:../..//src/net/bmac/bmac.c **** bmac_rfRxInfo.pPayload = buf; 82 168 .LM4: 83 169 000c 9093 0000 sts (bmac_rfRxInfo+7)+1,r25 84 170 0010 8093 0000 sts bmac_rfRxInfo+7,r24 85 45:../..//src/net/bmac/bmac.c **** bmac_rfRxInfo.max_length = size; 86 172 .LM5: 87 173 0014 6093 0000 sts bmac_rfRxInfo+6,r22 88 46:../..//src/net/bmac/bmac.c **** rx_buf_empty=1; 89 175 .LM6: 90 176 0018 81E0 ldi r24,lo8(1) 91 177 001a 8093 0000 sts rx_buf_empty,r24 92 178 001e 81E0 ldi r24,lo8(1) 93 179 0020 90E0 ldi r25,hi8(1) 94 47:../..//src/net/bmac/bmac.c **** return NRK_OK; 95 48:../..//src/net/bmac/bmac.c **** } 96 181 .LM7: 97 182 0022 0895 ret 98 183 /* epilogue: frame size=0 */ 99 184 /* epilogue: noreturn */ 100 185 /* epilogue end (size=0) */ 101 186 /* function bmac_rx_pkt_set_buffer size 17 (17) */ 102 188 .Lscope1: 103 190 .stabd 78,0,0 104 192 .global bmac_rx_pkt_ready 105 194 bmac_rx_pkt_ready: 106 195 .stabd 46,0,0 107 49:../..//src/net/bmac/bmac.c **** 108 50:../..//src/net/bmac/bmac.c **** int8_t bmac_init (uint8_t chan) 109 51:../..//src/net/bmac/bmac.c **** { 110 52:../..//src/net/bmac/bmac.c **** uint8_t i; 111 53:../..//src/net/bmac/bmac.c **** uint16_t a,b; 112 54:../..//src/net/bmac/bmac.c **** 113 55:../..//src/net/bmac/bmac.c **** tx_data_ready=0; 114 56:../..//src/net/bmac/bmac.c **** // Set the one main rx buffer 115 57:../..//src/net/bmac/bmac.c **** rx_buf_empty=0; 116 58:../..//src/net/bmac/bmac.c **** bmac_rfRxInfo.pPayload = NULL; 117 59:../..//src/net/bmac/bmac.c **** bmac_rfRxInfo.max_length = 0; 118 60:../..//src/net/bmac/bmac.c **** 119 61:../..//src/net/bmac/bmac.c **** // Setup the cc2420 chip 120 62:../..//src/net/bmac/bmac.c **** rf_init (&bmac_rfRxInfo, chan, 0x2420, 0); 121 63:../..//src/net/bmac/bmac.c **** 122 64:../..//src/net/bmac/bmac.c **** FASTSPI_SETREG(CC2420_RSSI, 0xE580); // CCA THR=-25 123 65:../..//src/net/bmac/bmac.c **** FASTSPI_SETREG(CC2420_TXCTRL, 0x80FF); // TX TURNAROUND = 128 us 124 66:../..//src/net/bmac/bmac.c **** FASTSPI_SETREG(CC2420_RXCTRL1, 0x0A56); 125 67:../..//src/net/bmac/bmac.c **** bmac_running=1; 126 68:../..//src/net/bmac/bmac.c **** return NRK_OK; 127 69:../..//src/net/bmac/bmac.c **** } 128 70:../..//src/net/bmac/bmac.c **** 129 71:../..//src/net/bmac/bmac.c **** int8_t bmac_tx_packet(uint8_t *buf, uint8_t len) 130 72:../..//src/net/bmac/bmac.c **** { 131 73:../..//src/net/bmac/bmac.c **** if(tx_data_ready==1) return NRK_ERROR; 132 74:../..//src/net/bmac/bmac.c **** tx_data_ready=1; 133 75:../..//src/net/bmac/bmac.c **** bmac_rfTxInfo.pPayload=buf; 134 76:../..//src/net/bmac/bmac.c **** bmac_rfTxInfo.length=len; 135 77:../..//src/net/bmac/bmac.c **** nrk_event_wait (SIG(BMAC_TX_PKT_DONE_EVENT)); 136 78:../..//src/net/bmac/bmac.c **** return NRK_OK; 137 79:../..//src/net/bmac/bmac.c **** } 138 80:../..//src/net/bmac/bmac.c **** 139 81:../..//src/net/bmac/bmac.c **** 140 82:../..//src/net/bmac/bmac.c **** uint8_t *bmac_rx_pkt_get(uint8_t *len, uint8_t *rssi) 141 83:../..//src/net/bmac/bmac.c **** { 142 84:../..//src/net/bmac/bmac.c **** 143 85:../..//src/net/bmac/bmac.c **** if(bmac_rx_pkt_ready()==0) 144 86:../..//src/net/bmac/bmac.c **** { 145 87:../..//src/net/bmac/bmac.c **** *len=0; 146 88:../..//src/net/bmac/bmac.c **** *rssi=0; 147 89:../..//src/net/bmac/bmac.c **** return NULL; 148 90:../..//src/net/bmac/bmac.c **** } 149 91:../..//src/net/bmac/bmac.c **** *len=bmac_rfRxInfo.length; 150 92:../..//src/net/bmac/bmac.c **** *rssi=bmac_rfRxInfo.rssi; 151 93:../..//src/net/bmac/bmac.c **** return bmac_rfRxInfo.pPayload; 152 94:../..//src/net/bmac/bmac.c **** } 153 95:../..//src/net/bmac/bmac.c **** 154 96:../..//src/net/bmac/bmac.c **** int8_t bmac_rx_pkt_ready(void) 155 97:../..//src/net/bmac/bmac.c **** { 156 197 .LM8: 157 198 /* prologue: frame size=0 */ 158 199 /* prologue end (size=0) */ 159 200 0024 20E0 ldi r18,lo8(0) 160 201 0026 30E0 ldi r19,hi8(0) 161 202 0028 8091 0000 lds r24,rx_buf_empty 162 203 002c 8823 tst r24 163 204 002e 01F4 brne .L9 164 206 .LM9: 165 207 0030 21E0 ldi r18,lo8(1) 166 208 0032 30E0 ldi r19,hi8(1) 167 209 .L9: 168 98:../..//src/net/bmac/bmac.c **** return (!rx_buf_empty); 169 99:../..//src/net/bmac/bmac.c **** } 170 211 .LM10: 171 212 0034 C901 movw r24,r18 172 213 /* epilogue: frame size=0 */ 173 214 0036 0895 ret 174 215 /* epilogue end (size=1) */ 175 216 /* function bmac_rx_pkt_ready size 10 (9) */ 176 218 .Lscope2: 177 220 .stabd 78,0,0 178 222 .global bmac_rx_pkt_release 179 224 bmac_rx_pkt_release: 180 225 .stabd 46,0,0 181 100:../..//src/net/bmac/bmac.c **** 182 101:../..//src/net/bmac/bmac.c **** int8_t bmac_rx_pkt_release(void) 183 102:../..//src/net/bmac/bmac.c **** { 184 227 .LM11: 185 228 /* prologue: frame size=0 */ 186 229 /* prologue end (size=0) */ 187 103:../..//src/net/bmac/bmac.c **** rx_buf_empty=1; 188 231 .LM12: 189 232 0038 81E0 ldi r24,lo8(1) 190 233 003a 8093 0000 sts rx_buf_empty,r24 191 104:../..//src/net/bmac/bmac.c **** return NRK_OK; 192 105:../..//src/net/bmac/bmac.c **** } 193 235 .LM13: 194 236 003e 81E0 ldi r24,lo8(1) 195 237 0040 90E0 ldi r25,hi8(1) 196 238 /* epilogue: frame size=0 */ 197 239 0042 0895 ret 198 240 /* epilogue end (size=1) */ 199 241 /* function bmac_rx_pkt_release size 6 (5) */ 200 243 .Lscope3: 201 245 .stabd 78,0,0 202 248 .global bmac_set_rx_check_rate 203 250 bmac_set_rx_check_rate: 204 251 .stabd 46,0,0 205 106:../..//src/net/bmac/bmac.c **** 206 107:../..//src/net/bmac/bmac.c **** void bmac_nw_task () 207 108:../..//src/net/bmac/bmac.c **** { 208 109:../..//src/net/bmac/bmac.c **** int8_t v; 209 110:../..//src/net/bmac/bmac.c **** 210 111:../..//src/net/bmac/bmac.c **** while(bmac_started()==0) nrk_wait_until_next_period(); 211 112:../..//src/net/bmac/bmac.c **** 212 113:../..//src/net/bmac/bmac.c **** while (1) { 213 114:../..//src/net/bmac/bmac.c **** v=_bmac_channel_check(); 214 115:../..//src/net/bmac/bmac.c **** if(v==0) 215 116:../..//src/net/bmac/bmac.c **** { 216 117:../..//src/net/bmac/bmac.c **** if(_bmac_rx()==1) 217 118:../..//src/net/bmac/bmac.c **** nrk_event_signal (SIG(BMAC_RX_PKT_EVENT)); 218 119:../..//src/net/bmac/bmac.c **** 219 120:../..//src/net/bmac/bmac.c **** } 220 121:../..//src/net/bmac/bmac.c **** if(tx_data_ready==1) 221 122:../..//src/net/bmac/bmac.c **** { 222 123:../..//src/net/bmac/bmac.c **** _bmac_tx(); 223 124:../..//src/net/bmac/bmac.c **** } 224 125:../..//src/net/bmac/bmac.c **** 225 126:../..//src/net/bmac/bmac.c **** nrk_wait_until_next_period(); 226 127:../..//src/net/bmac/bmac.c **** } 227 128:../..//src/net/bmac/bmac.c **** 228 129:../..//src/net/bmac/bmac.c **** } 229 130:../..//src/net/bmac/bmac.c **** 230 131:../..//src/net/bmac/bmac.c **** 231 132:../..//src/net/bmac/bmac.c **** int8_t bmac_set_rx_check_rate(uint16_t ms) 232 133:../..//src/net/bmac/bmac.c **** { 233 253 .LM14: 234 254 /* prologue: frame size=0 */ 235 255 /* prologue end (size=0) */ 236 134:../..//src/net/bmac/bmac.c **** // Not YET implemented! 237 135:../..//src/net/bmac/bmac.c **** // This function needs to check the wait_until_next_period 238 136:../..//src/net/bmac/bmac.c **** // timeouts for the main checking task. 239 137:../..//src/net/bmac/bmac.c **** return NRK_ERROR; 240 138:../..//src/net/bmac/bmac.c **** } 241 257 .LM15: 242 258 0044 8FEF ldi r24,lo8(-1) 243 259 0046 9FEF ldi r25,hi8(-1) 244 260 /* epilogue: frame size=0 */ 245 261 0048 0895 ret 246 262 /* epilogue end (size=1) */ 247 263 /* function bmac_set_rx_check_rate size 3 (2) */ 248 265 .Lscope4: 249 267 .stabd 78,0,0 250 269 .global bmac_started 251 271 bmac_started: 252 272 .stabd 46,0,0 253 139:../..//src/net/bmac/bmac.c **** 254 140:../..//src/net/bmac/bmac.c **** int8_t bmac_started() 255 141:../..//src/net/bmac/bmac.c **** { 256 274 .LM16: 257 275 /* prologue: frame size=0 */ 258 276 /* prologue end (size=0) */ 259 277 004a 8091 0000 lds r24,bmac_running 260 142:../..//src/net/bmac/bmac.c **** return bmac_running; 261 143:../..//src/net/bmac/bmac.c **** } 262 279 .LM17: 263 280 004e 9927 clr r25 264 281 0050 87FD sbrc r24,7 265 282 0052 9095 com r25 266 283 /* epilogue: frame size=0 */ 267 284 0054 0895 ret 268 285 /* epilogue end (size=1) */ 269 286 /* function bmac_started size 6 (5) */ 270 288 .Lscope5: 271 290 .stabd 78,0,0 272 292 .global bmac_task_config 273 294 bmac_task_config: 274 295 .stabd 46,0,0 275 144:../..//src/net/bmac/bmac.c **** 276 145:../..//src/net/bmac/bmac.c **** int8_t _bmac_channel_check() 277 146:../..//src/net/bmac/bmac.c **** { 278 147:../..//src/net/bmac/bmac.c **** int8_t val; 279 148:../..//src/net/bmac/bmac.c **** rf_polling_rx_on(); 280 149:../..//src/net/bmac/bmac.c **** nrk_spin_wait_us(250); 281 150:../..//src/net/bmac/bmac.c **** val=CCA_IS_1; 282 151:../..//src/net/bmac/bmac.c **** rf_rx_off(); 283 152:../..//src/net/bmac/bmac.c **** return val; 284 153:../..//src/net/bmac/bmac.c **** 285 154:../..//src/net/bmac/bmac.c **** } 286 155:../..//src/net/bmac/bmac.c **** 287 156:../..//src/net/bmac/bmac.c **** int8_t _bmac_rx() 288 157:../..//src/net/bmac/bmac.c **** { 289 158:../..//src/net/bmac/bmac.c **** int8_t n; 290 159:../..//src/net/bmac/bmac.c **** uint8_t cnt,i; 291 160:../..//src/net/bmac/bmac.c **** 292 161:../..//src/net/bmac/bmac.c **** 293 162:../..//src/net/bmac/bmac.c **** rf_set_rx (&bmac_rfRxInfo, 25); 294 163:../..//src/net/bmac/bmac.c **** rf_polling_rx_on (); 295 164:../..//src/net/bmac/bmac.c **** cnt=0; 296 165:../..//src/net/bmac/bmac.c **** while ((n = rf_rx_check ()) == 0) 297 166:../..//src/net/bmac/bmac.c **** { 298 167:../..//src/net/bmac/bmac.c **** cnt++; 299 168:../..//src/net/bmac/bmac.c **** nrk_wait_until_next_period(); 300 169:../..//src/net/bmac/bmac.c **** if(cnt>3) { 301 170:../..//src/net/bmac/bmac.c **** #ifdef DEBUG 302 171:../..//src/net/bmac/bmac.c **** printf( "rx timeout 1 %d\r\n",cnt ); 303 172:../..//src/net/bmac/bmac.c **** #endif 304 173:../..//src/net/bmac/bmac.c **** rf_rx_off(); 305 174:../..//src/net/bmac/bmac.c **** return 0; 306 175:../..//src/net/bmac/bmac.c **** } 307 176:../..//src/net/bmac/bmac.c **** } 308 177:../..//src/net/bmac/bmac.c **** if (n != 0) { 309 178:../..//src/net/bmac/bmac.c **** n = 0; 310 179:../..//src/net/bmac/bmac.c **** // Packet on its way 311 180:../..//src/net/bmac/bmac.c **** cnt=0; 312 181:../..//src/net/bmac/bmac.c **** while ((n = rf_polling_rx_packet ()) == 0) { 313 182:../..//src/net/bmac/bmac.c **** cnt++; 314 183:../..//src/net/bmac/bmac.c **** nrk_spin_wait_us(100); 315 184:../..//src/net/bmac/bmac.c **** if (cnt > 50) { 316 185:../..//src/net/bmac/bmac.c **** #ifdef DEBUG 317 186:../..//src/net/bmac/bmac.c **** printf( "rx timeout 2\r\n" ); 318 187:../..//src/net/bmac/bmac.c **** #endif 319 188:../..//src/net/bmac/bmac.c **** rf_rx_off(); 320 189:../..//src/net/bmac/bmac.c **** return 0; 321 190:../..//src/net/bmac/bmac.c **** } 322 191:../..//src/net/bmac/bmac.c **** } 323 192:../..//src/net/bmac/bmac.c **** } 324 193:../..//src/net/bmac/bmac.c **** rf_rx_off(); 325 194:../..//src/net/bmac/bmac.c **** if (n == 1) { 326 195:../..//src/net/bmac/bmac.c **** // CRC and checksum passed 327 196:../..//src/net/bmac/bmac.c **** rx_buf_empty=0; 328 197:../..//src/net/bmac/bmac.c **** #ifdef DEBUG 329 198:../..//src/net/bmac/bmac.c **** printf( "BMAC: SNR= %d [",bmac_rfRxInfo.rssi ); 330 199:../..//src/net/bmac/bmac.c **** for(i=0; i<bmac_rfRxInfo.length; i++ ) 331 200:../..//src/net/bmac/bmac.c **** printf( "%c", bmac_rfRxInfo.pPayload[i]); 332 201:../..//src/net/bmac/bmac.c **** printf( "]\r\n" ); 333 202:../..//src/net/bmac/bmac.c **** #endif 334 203:../..//src/net/bmac/bmac.c **** return 1; 335 204:../..//src/net/bmac/bmac.c **** } else 336 205:../..//src/net/bmac/bmac.c **** { 337 206:../..//src/net/bmac/bmac.c **** #ifdef DEBUG 338 207:../..//src/net/bmac/bmac.c **** printf( "CRC failed!\r\n" ); 339 208:../..//src/net/bmac/bmac.c **** #endif 340 209:../..//src/net/bmac/bmac.c **** return 0; 341 210:../..//src/net/bmac/bmac.c **** } 342 211:../..//src/net/bmac/bmac.c **** 343 212:../..//src/net/bmac/bmac.c **** 344 213:../..//src/net/bmac/bmac.c **** return 0; 345 214:../..//src/net/bmac/bmac.c **** } 346 215:../..//src/net/bmac/bmac.c **** 347 216:../..//src/net/bmac/bmac.c **** 348 217:../..//src/net/bmac/bmac.c **** int8_t _bmac_tx() 349 218:../..//src/net/bmac/bmac.c **** { 350 219:../..//src/net/bmac/bmac.c **** rf_test_mode(); 351 220:../..//src/net/bmac/bmac.c **** rf_carrier_on(); 352 221:../..//src/net/bmac/bmac.c **** nrk_wait_until_next_period(); 353 222:../..//src/net/bmac/bmac.c **** rf_carrier_off(); 354 223:../..//src/net/bmac/bmac.c **** rf_data_mode(); 355 224:../..//src/net/bmac/bmac.c **** // send packet 356 225:../..//src/net/bmac/bmac.c **** rf_rx_off(); 357 226:../..//src/net/bmac/bmac.c **** rf_tx_packet (&bmac_rfTxInfo); 358 227:../..//src/net/bmac/bmac.c **** rf_rx_off(); 359 228:../..//src/net/bmac/bmac.c **** 360 229:../..//src/net/bmac/bmac.c **** tx_data_ready=0; 361 230:../..//src/net/bmac/bmac.c **** nrk_event_signal (SIG(BMAC_TX_PKT_DONE_EVENT)); 362 231:../..//src/net/bmac/bmac.c **** return NRK_OK; 363 232:../..//src/net/bmac/bmac.c **** } 364 233:../..//src/net/bmac/bmac.c **** 365 234:../..//src/net/bmac/bmac.c **** void bmac_task_config () 366 235:../..//src/net/bmac/bmac.c **** { 367 297 .LM18: 368 298 /* prologue: frame size=0 */ 369 299 /* prologue end (size=0) */ 370 236:../..//src/net/bmac/bmac.c **** bmac_task.task = bmac_nw_task; 371 301 .LM19: 372 302 0056 80E0 ldi r24,lo8(pm(bmac_nw_task)) 373 303 0058 90E0 ldi r25,hi8(pm(bmac_nw_task)) 374 304 005a 9093 0000 sts (bmac_task+5)+1,r25 375 305 005e 8093 0000 sts bmac_task+5,r24 376 237:../..//src/net/bmac/bmac.c **** bmac_task.Ptos = (void *) &bmac_task_stack[BMAC_STACK_SIZE-1]; 377 307 .LM20: 378 308 0062 80E0 ldi r24,lo8(bmac_task_stack+127) 379 309 0064 90E0 ldi r25,hi8(bmac_task_stack+127) 380 310 0066 9093 0000 sts (bmac_task+1)+1,r25 381 311 006a 8093 0000 sts bmac_task+1,r24 382 238:../..//src/net/bmac/bmac.c **** bmac_task.Pbos = (void *) &bmac_task_stack[0]; 383 313 .LM21: 384 314 006e 80E0 ldi r24,lo8(bmac_task_stack) 385 315 0070 90E0 ldi r25,hi8(bmac_task_stack) 386 316 0072 9093 0000 sts (bmac_task+3)+1,r25 387 317 0076 8093 0000 sts bmac_task+3,r24 388 239:../..//src/net/bmac/bmac.c **** bmac_task.prio = 20; 389 319 .LM22: 390 320 007a 84E1 ldi r24,lo8(20) 391 321 007c 8093 0000 sts bmac_task+8,r24 392 240:../..//src/net/bmac/bmac.c **** bmac_task.FirstActivation = TRUE; 393 323 .LM23: 394 324 0080 81E0 ldi r24,lo8(1) 395 325 0082 8093 0000 sts bmac_task+7,r24 396 241:../..//src/net/bmac/bmac.c **** bmac_task.Type = BASIC_TASK; 397 327 .LM24: 398 328 0086 8093 0000 sts bmac_task+9,r24 399 242:../..//src/net/bmac/bmac.c **** bmac_task.SchType = PREEMPTIVE; 400 330 .LM25: 401 331 008a 8093 0000 sts bmac_task+10,r24 402 243:../..//src/net/bmac/bmac.c **** bmac_task.period.secs = 0; 403 333 .LM26: 404 334 008e 1092 0000 sts bmac_task+11,__zero_reg__ 405 335 0092 1092 0000 sts (bmac_task+11)+1,__zero_reg__ 406 336 0096 1092 0000 sts (bmac_task+11)+2,__zero_reg__ 407 337 009a 1092 0000 sts (bmac_task+11)+3,__zero_reg__ 408 244:../..//src/net/bmac/bmac.c **** bmac_task.period.nano_secs = 100 * NANOS_PER_MS; 409 339 .LM27: 410 340 009e 80E0 ldi r24,lo8(100000000) 411 341 00a0 91EE ldi r25,hi8(100000000) 412 342 00a2 A5EF ldi r26,hlo8(100000000) 413 343 00a4 B5E0 ldi r27,hhi8(100000000) 414 344 00a6 8093 0000 sts bmac_task+15,r24 415 345 00aa 9093 0000 sts (bmac_task+15)+1,r25 416 346 00ae A093 0000 sts (bmac_task+15)+2,r26 417 347 00b2 B093 0000 sts (bmac_task+15)+3,r27 418 245:../..//src/net/bmac/bmac.c **** bmac_task.cpu_reserve.secs = 15; // Way larger than period 419 349 .LM28: 420 350 00b6 8FE0 ldi r24,lo8(15) 421 351 00b8 90E0 ldi r25,hi8(15) 422 352 00ba A0E0 ldi r26,hlo8(15) 423 353 00bc B0E0 ldi r27,hhi8(15) 424 354 00be 8093 0000 sts bmac_task+19,r24 425 355 00c2 9093 0000 sts (bmac_task+19)+1,r25 426 356 00c6 A093 0000 sts (bmac_task+19)+2,r26 427 357 00ca B093 0000 sts (bmac_task+19)+3,r27 428 246:../..//src/net/bmac/bmac.c **** bmac_task.cpu_reserve.nano_secs = 0; 429 359 .LM29: 430 360 00ce 1092 0000 sts bmac_task+23,__zero_reg__ 431 361 00d2 1092 0000 sts (bmac_task+23)+1,__zero_reg__ 432 362 00d6 1092 0000 sts (bmac_task+23)+2,__zero_reg__ 433 363 00da 1092 0000 sts (bmac_task+23)+3,__zero_reg__ 434 247:../..//src/net/bmac/bmac.c **** bmac_task.offset.secs = 0; 435 365 .LM30: 436 366 00de 1092 0000 sts bmac_task+27,__zero_reg__ 437 367 00e2 1092 0000 sts (bmac_task+27)+1,__zero_reg__ 438 368 00e6 1092 0000 sts (bmac_task+27)+2,__zero_reg__ 439 369 00ea 1092 0000 sts (bmac_task+27)+3,__zero_reg__ 440 248:../..//src/net/bmac/bmac.c **** bmac_task.offset.nano_secs = 0; 441 371 .LM31: 442 372 00ee 1092 0000 sts bmac_task+31,__zero_reg__ 443 373 00f2 1092 0000 sts (bmac_task+31)+1,__zero_reg__ 444 374 00f6 1092 0000 sts (bmac_task+31)+2,__zero_reg__ 445 375 00fa 1092 0000 sts (bmac_task+31)+3,__zero_reg__ 446 249:../..//src/net/bmac/bmac.c **** nrk_activate_task (&bmac_task); 447 377 .LM32: 448 378 00fe 80E0 ldi r24,lo8(bmac_task) 449 379 0100 90E0 ldi r25,hi8(bmac_task) 450 380 0102 0E94 0000 call nrk_activate_task 451 381 /* epilogue: frame size=0 */ 452 382 0106 0895 ret 453 383 /* epilogue end (size=1) */ 454 384 /* function bmac_task_config size 89 (88) */ 455 386 .Lscope6: 456 388 .stabd 78,0,0 457 390 .global _bmac_tx 458 392 _bmac_tx: 459 393 .stabd 46,0,0 460 395 .LM33: 461 396 /* prologue: frame size=0 */ 462 397 /* prologue end (size=0) */ 463 399 .LM34: 464 400 0108 0E94 0000 call rf_test_mode 465 402 .LM35: 466 403 010c 0E94 0000 call rf_carrier_on 467 405 .LM36: 468 406 0110 0E94 0000 call nrk_wait_until_next_period 469 408 .LM37: 470 409 0114 0E94 0000 call rf_carrier_off 471 411 .LM38: 472 412 0118 0E94 0000 call rf_data_mode 473 414 .LM39: 474 415 011c 0E94 0000 call rf_rx_off 475 417 .LM40: 476 418 0120 80E0 ldi r24,lo8(bmac_rfTxInfo) 477 419 0122 90E0 ldi r25,hi8(bmac_rfTxInfo) 478 420 0124 0E94 0000 call rf_tx_packet 479 422 .LM41: 480 423 0128 0E94 0000 call rf_rx_off 481 425 .LM42: 482 426 012c 1092 0000 sts tx_data_ready,__zero_reg__ 483 428 .LM43: 484 429 0130 60E4 ldi r22,lo8(64) 485 430 0132 70E0 ldi r23,hi8(64) 486 431 0134 80E0 ldi r24,hlo8(64) 487 432 0136 90E0 ldi r25,hhi8(64) 488 433 0138 0E94 0000 call nrk_event_signal 489 435 .LM44: 490 436 013c 81E0 ldi r24,lo8(1) 491 437 013e 90E0 ldi r25,hi8(1) 492 438 /* epilogue: frame size=0 */ 493 439 0140 0895 ret 494 440 /* epilogue end (size=1) */ 495 441 /* function _bmac_tx size 29 (28) */ 496 443 .Lscope7: 497 445 .stabd 78,0,0 498 447 .global _bmac_channel_check 499 449 _bmac_channel_check: 500 450 .stabd 46,0,0 501 452 .LM45: 502 453 /* prologue: frame size=0 */ 503 454 0142 0F93 push r16 504 455 0144 1F93 push r17 505 456 /* prologue end (size=2) */ 506 458 .LM46: 507 459 0146 0E94 0000 call rf_polling_rx_on 508 461 .LM47: 509 462 014a 8AEF ldi r24,lo8(250) 510 463 014c 90E0 ldi r25,hi8(250) 511 464 014e 0E94 0000 call nrk_spin_wait_us 512 466 .LM48: 513 467 0152 00B3 in r16,48-0x20 514 469 .LM49: 515 470 0154 0E94 0000 call rf_rx_off 516 471 0158 1127 clr r17 517 472 015a 86E0 ldi r24,6 518 473 015c 1695 1: lsr r17 519 474 015e 0795 ror r16 520 475 0160 8A95 dec r24 521 476 0162 01F4 brne 1b 522 478 .LM50: 523 479 0164 C801 movw r24,r16 524 480 0166 8170 andi r24,lo8(1) 525 481 0168 9070 andi r25,hi8(1) 526 482 /* epilogue: frame size=0 */ 527 483 016a 1F91 pop r17 528 484 016c 0F91 pop r16 529 485 016e 0895 ret 530 486 /* epilogue end (size=3) */ 531 487 /* function _bmac_channel_check size 23 (18) */ 532 489 .Lscope8: 533 491 .stabd 78,0,0 534 493 .global _bmac_rx 535 495 _bmac_rx: 536 496 .stabd 46,0,0 537 498 .LM51: 538 499 /* prologue: frame size=0 */ 539 500 0170 0F93 push r16 540 501 0172 1F93 push r17 541 502 /* prologue end (size=2) */ 542 504 .LM52: 543 505 0174 69E1 ldi r22,lo8(25) 544 506 0176 80E0 ldi r24,lo8(bmac_rfRxInfo) 545 507 0178 90E0 ldi r25,hi8(bmac_rfRxInfo) 546 508 017a 0E94 0000 call rf_set_rx 547 510 .LM53: 548 511 017e 0E94 0000 call rf_polling_rx_on 549 512 0182 10E0 ldi r17,lo8(0) 550 513 0184 00C0 rjmp .L24 551 514 .L25: 552 516 .LM54: 553 517 0186 1F5F subi r17,lo8(-(1)) 554 519 .LM55: 555 520 0188 0E94 0000 call nrk_wait_until_next_period 556 522 .LM56: 557 523 018c 1430 cpi r17,lo8(4) 558 524 018e 01F0 breq .L36 559 525 .L24: 560 527 .LM57: 561 528 0190 0E94 0000 call rf_rx_check 562 529 0194 8823 tst r24 563 530 0196 01F0 breq .L25 564 531 0198 00C0 rjmp .L38 565 532 .L29: 566 534 .LM58: 567 535 019a 1F5F subi r17,lo8(-(1)) 568 537 .LM59: 569 538 019c 84E6 ldi r24,lo8(100) 570 539 019e 90E0 ldi r25,hi8(100) 571 540 01a0 0E94 0000 call nrk_spin_wait_us 572 542 .LM60: 573 543 01a4 1333 cpi r17,lo8(51) 574 544 01a6 01F4 brne .L30 575 545 01a8 00C0 rjmp .L36 576 546 .L38: 577 548 .LM61: 578 549 01aa 10E0 ldi r17,lo8(0) 579 550 .L30: 580 552 .LM62: 581 553 01ac 0E94 0000 call rf_polling_rx_packet 582 554 01b0 082F mov r16,r24 583 555 01b2 8823 tst r24 584 556 01b4 01F0 breq .L29 585 558 .LM63: 586 559 01b6 0E94 0000 call rf_rx_off 587 561 .LM64: 588 562 01ba 0130 cpi r16,lo8(1) 589 563 01bc 01F0 breq .L33 590 564 01be 00C0 rjmp .L41 591 565 .L36: 592 567 .LM65: 593 568 01c0 0E94 0000 call rf_rx_off 594 569 .L41: 595 570 01c4 80E0 ldi r24,lo8(0) 596 571 01c6 90E0 ldi r25,hi8(0) 597 572 01c8 00C0 rjmp .L27 598 573 .L33: 599 575 .LM66: 600 576 01ca 1092 0000 sts rx_buf_empty,__zero_reg__ 601 577 01ce 81E0 ldi r24,lo8(1) 602 578 01d0 90E0 ldi r25,hi8(1) 603 579 .L27: 604 580 /* epilogue: frame size=0 */ 605 581 01d2 1F91 pop r17 606 582 01d4 0F91 pop r16 607 583 01d6 0895 ret 608 584 /* epilogue end (size=3) */ 609 585 /* function _bmac_rx size 52 (47) */ 610 591 .Lscope9: 611 593 .stabd 78,0,0 612 597 .global bmac_tx_packet 613 599 bmac_tx_packet: 614 600 .stabd 46,0,0 615 602 .LM67: 616 603 /* prologue: frame size=0 */ 617 604 /* prologue end (size=0) */ 618 605 01d8 9C01 movw r18,r24 619 607 .LM68: 620 608 01da 8091 0000 lds r24,tx_data_ready 621 609 01de 8130 cpi r24,lo8(1) 622 610 01e0 01F4 brne .L43 623 612 .LM69: 624 613 01e2 8FEF ldi r24,lo8(-1) 625 614 01e4 9FEF ldi r25,hi8(-1) 626 615 01e6 0895 ret 627 616 .L43: 628 618 .LM70: 629 619 01e8 81E0 ldi r24,lo8(1) 630 620 01ea 8093 0000 sts tx_data_ready,r24 631 622 .LM71: 632 623 01ee 3093 0000 sts (bmac_rfTxInfo+6)+1,r19 633 624 01f2 2093 0000 sts bmac_rfTxInfo+6,r18 634 626 .LM72: 635 627 01f6 6093 0000 sts bmac_rfTxInfo+4,r22 636 629 .LM73: 637 630 01fa 60E4 ldi r22,lo8(64) 638 631 01fc 70E0 ldi r23,hi8(64) 639 632 01fe 80E0 ldi r24,hlo8(64) 640 633 0200 90E0 ldi r25,hhi8(64) 641 634 0202 0E94 0000 call nrk_event_wait 642 635 0206 81E0 ldi r24,lo8(1) 643 636 0208 90E0 ldi r25,hi8(1) 644 638 .LM74: 645 639 020a 0895 ret 646 640 /* epilogue: frame size=0 */ 647 641 /* epilogue: noreturn */ 648 642 /* epilogue end (size=0) */ 649 643 /* function bmac_tx_packet size 26 (26) */ 650 645 .Lscope10: 651 647 .stabd 78,0,0 652 649 .global bmac_wait_until_rx_packet 653 651 bmac_wait_until_rx_packet: 654 652 .stabd 46,0,0 655 654 .LM75: 656 655 /* prologue: frame size=0 */ 657 656 /* prologue end (size=0) */ 658 658 .LM76: 659 659 020c 60E2 ldi r22,lo8(32) 660 660 020e 70E0 ldi r23,hi8(32) 661 661 0210 80E0 ldi r24,hlo8(32) 662 662 0212 90E0 ldi r25,hhi8(32) 663 663 0214 0E94 0000 call nrk_event_wait 664 665 .LM77: 665 666 0218 81E0 ldi r24,lo8(1) 666 667 021a 90E0 ldi r25,hi8(1) 667 668 /* epilogue: frame size=0 */ 668 669 021c 0895 ret 669 670 /* epilogue end (size=1) */ 670 671 /* function bmac_wait_until_rx_packet size 9 (8) */ 671 673 .Lscope11: 672 675 .stabd 78,0,0 673 678 .global bmac_init 674 680 bmac_init: 675 681 .stabd 46,0,0 676 683 .LM78: 677 684 /* prologue: frame size=0 */ 678 685 /* prologue end (size=0) */ 679 687 .LM79: 680 688 021e 1092 0000 sts tx_data_ready,__zero_reg__ 681 690 .LM80: 682 691 0222 1092 0000 sts rx_buf_empty,__zero_reg__ 683 693 .LM81: 684 694 0226 1092 0000 sts (bmac_rfRxInfo+7)+1,__zero_reg__ 685 695 022a 1092 0000 sts bmac_rfRxInfo+7,__zero_reg__ 686 697 .LM82: 687 698 022e 1092 0000 sts bmac_rfRxInfo+6,__zero_reg__ 688 700 .LM83: 689 701 0232 20E0 ldi r18,lo8(0) 690 702 0234 30E0 ldi r19,hi8(0) 691 703 0236 40E2 ldi r20,lo8(9248) 692 704 0238 54E2 ldi r21,hi8(9248) 693 705 023a 682F mov r22,r24 694 706 023c 80E0 ldi r24,lo8(bmac_rfRxInfo) 695 707 023e 90E0 ldi r25,hi8(bmac_rfRxInfo) 696 708 0240 0E94 0000 call rf_init 697 710 .LM84: 698 711 0244 C098 cbi 56-0x20,0 699 712 0246 83E1 ldi r24,lo8(19) 700 713 0248 8FB9 out 47-0x20,r24 701 714 .L50: 702 716 .LM85: 703 717 024a 779B sbis 46-0x20,7 704 718 024c 00C0 rjmp .L50 705 719 024e 85EE ldi r24,lo8(-27) 706 720 0250 8FB9 out 47-0x20,r24 707 721 .L52: 708 722 0252 779B sbis 46-0x20,7 709 723 0254 00C0 rjmp .L52 710 724 0256 80E8 ldi r24,lo8(-128) 711 725 0258 8FB9 out 47-0x20,r24 712 726 .L54: 713 727 025a 779B sbis 46-0x20,7 714 728 025c 00C0 rjmp .L54 715 729 025e C09A sbi 56-0x20,0 716 731 .LM86: 717 732 0260 C098 cbi 56-0x20,0 718 733 0262 85E1 ldi r24,lo8(21) 719 734 0264 8FB9 out 47-0x20,r24 720 735 .L56: 721 736 0266 779B sbis 46-0x20,7 722 737 0268 00C0 rjmp .L56 723 738 026a 80E8 ldi r24,lo8(-128) 724 739 026c 8FB9 out 47-0x20,r24 725 740 .L58: 726 741 026e 779B sbis 46-0x20,7 727 742 0270 00C0 rjmp .L58 728 743 0272 8FEF ldi r24,lo8(-1) 729 744 0274 8FB9 out 47-0x20,r24 730 745 .L60: 731 746 0276 779B sbis 46-0x20,7 732 747 0278 00C0 rjmp .L60 733 748 027a C09A sbi 56-0x20,0 734 750 .LM87: 735 751 027c C098 cbi 56-0x20,0 736 752 027e 87E1 ldi r24,lo8(23) 737 753 0280 8FB9 out 47-0x20,r24 738 754 .L62: 739 755 0282 779B sbis 46-0x20,7 740 756 0284 00C0 rjmp .L62 741 757 0286 8AE0 ldi r24,lo8(10) 742 758 0288 8FB9 out 47-0x20,r24 743 759 .L64: 744 760 028a 779B sbis 46-0x20,7 745 761 028c 00C0 rjmp .L64 746 762 028e 86E5 ldi r24,lo8(86) 747 763 0290 8FB9 out 47-0x20,r24 748 764 .L66: 749 765 0292 779B sbis 46-0x20,7 750 766 0294 00C0 rjmp .L66 751 767 0296 C09A sbi 56-0x20,0 752 769 .LM88: 753 770 0298 81E0 ldi r24,lo8(1) 754 771 029a 8093 0000 sts bmac_running,r24 755 773 .LM89: 756 774 029e 81E0 ldi r24,lo8(1) 757 775 02a0 90E0 ldi r25,hi8(1) 758 776 /* epilogue: frame size=0 */ 759 777 02a2 0895 ret 760 778 /* epilogue end (size=1) */ 761 779 /* function bmac_init size 67 (66) */ 762 781 .Lscope12: 763 783 .stabd 78,0,0 764 785 .global bmac_nw_task 765 787 bmac_nw_task: 766 788 .stabd 46,0,0 767 790 .LM90: 768 791 /* prologue: frame size=0 */ 769 792 /* prologue end (size=0) */ 770 793 02a4 00C0 rjmp .L88 771 794 .L89: 772 796 .LM91: 773 797 02a6 0E94 0000 call nrk_wait_until_next_period 774 798 .L88: 775 799 02aa 8091 0000 lds r24,bmac_running 776 800 02ae 8823 tst r24 777 801 02b0 01F0 breq .L89 778 802 .L97: 779 804 .LM92: 780 805 02b2 0E94 0000 call _bmac_channel_check 781 807 .LM93: 782 808 02b6 8823 tst r24 783 809 02b8 01F4 brne .L91 784 811 .LM94: 785 812 02ba 0E94 0000 call _bmac_rx 786 813 02be 8130 cpi r24,lo8(1) 787 814 02c0 01F4 brne .L91 788 816 .LM95: 789 817 02c2 60E2 ldi r22,lo8(32) 790 818 02c4 70E0 ldi r23,hi8(32) 791 819 02c6 80E0 ldi r24,hlo8(32) 792 820 02c8 90E0 ldi r25,hhi8(32) 793 821 02ca 0E94 0000 call nrk_event_signal 794 822 .L91: 795 824 .LM96: 796 825 02ce 8091 0000 lds r24,tx_data_ready 797 826 02d2 8130 cpi r24,lo8(1) 798 827 02d4 01F4 brne .L94 799 829 .LM97: 800 830 02d6 0E94 0000 call _bmac_tx 801 831 .L94: 802 833 .LM98: 803 834 02da 0E94 0000 call nrk_wait_until_next_period 804 835 02de 00C0 rjmp .L97 805 836 /* epilogue: frame size=0 */ 806 837 /* epilogue: noreturn */ 807 838 /* epilogue end (size=0) */ 808 839 /* function bmac_nw_task size 30 (30) */ 809 841 .Lscope13: 810 843 .stabd 78,0,0 811 847 .global bmac_rx_pkt_get 812 849 bmac_rx_pkt_get: 813 850 .stabd 46,0,0 814 852 .LM99: 815 853 /* prologue: frame size=0 */ 816 854 /* prologue end (size=0) */ 817 855 02e0 FC01 movw r30,r24 818 856 02e2 DB01 movw r26,r22 819 858 .LM100: 820 859 02e4 8091 0000 lds r24,rx_buf_empty 821 860 02e8 8823 tst r24 822 861 02ea 01F0 breq .L99 823 863 .LM101: 824 864 02ec 1082 st Z,__zero_reg__ 825 866 .LM102: 826 867 02ee 1C92 st X,__zero_reg__ 827 868 02f0 80E0 ldi r24,lo8(0) 828 869 02f2 90E0 ldi r25,hi8(0) 829 870 02f4 0895 ret 830 871 .L99: 831 873 .LM103: 832 874 02f6 8091 0000 lds r24,bmac_rfRxInfo+5 833 875 02fa 8083 st Z,r24 834 877 .LM104: 835 878 02fc 8091 0000 lds r24,bmac_rfRxInfo+10 836 879 0300 8C93 st X,r24 837 881 .LM105: 838 882 0302 8091 0000 lds r24,bmac_rfRxInfo+7 839 883 0306 9091 0000 lds r25,(bmac_rfRxInfo+7)+1 840 885 .LM106: 841 886 030a 0895 ret 842 887 /* epilogue: frame size=0 */ 843 888 /* epilogue: noreturn */ 844 889 /* epilogue end (size=0) */ 845 890 /* function bmac_rx_pkt_get size 22 (22) */ 846 892 .Lscope14: 847 894 .stabd 78,0,0 848 895 .comm nrk_idle_task_stk,128,1 849 896 .comm nrk_kernel_stk_ptr,2,1 850 897 .comm _nrk_prev_timer_val,1,1 851 898 .comm _nrk_time_trigger,1,1 852 899 .comm error_task,1,1 853 900 .comm error_num,1,1 854 901 .comm bmac_task,35,1 855 902 .comm bmac_task_stack,128,1 856 903 .comm bmac_rfRxInfo,11,1 857 904 .comm bmac_rfTxInfo,9,1 858 905 .comm tx_data_ready,1,1 859 906 .comm rx_buf_empty,1,1 860 907 .comm bmac_running,1,1 861 922 .Letext0: 862 923 /* File "../..//src/net/bmac/bmac.c": code 390 = 0x0186 ( 371), prologues 4, epilogues 15 */ 102 155 .LFBB2: 103 156 /* prologue: frame size=0 */ 104 157 /* prologue end (size=0) */ 105 75:../../src/net/bmac/bmac.c **** if(buf==NULL) return NRK_ERROR; 106 159 .LM2: 107 160 0002 0097 sbiw r24,0 108 161 0004 01F4 brne .L4 109 163 .LM3: 110 164 0006 8FEF ldi r24,lo8(-1) 111 165 0008 9FEF ldi r25,hi8(-1) 112 166 000a 0895 ret 113 167 .L4: 114 76:../../src/net/bmac/bmac.c **** bmac_rfRxInfo.pPayload = buf; 115 169 .LM4: 116 170 000c 9093 0000 sts (bmac_rfRxInfo+7)+1,r25 117 171 0010 8093 0000 sts bmac_rfRxInfo+7,r24 118 77:../../src/net/bmac/bmac.c **** bmac_rfRxInfo.max_length = size; 119 173 .LM5: 120 174 0014 6093 0000 sts bmac_rfRxInfo+6,r22 121 78:../../src/net/bmac/bmac.c **** rx_buf_empty=1; 122 176 .LM6: 123 177 0018 81E0 ldi r24,lo8(1) 124 178 001a 8093 0000 sts rx_buf_empty,r24 125 179 001e 81E0 ldi r24,lo8(1) 126 180 0020 90E0 ldi r25,hi8(1) 127 79:../../src/net/bmac/bmac.c **** return NRK_OK; 128 80:../../src/net/bmac/bmac.c **** } 129 182 .LM7: 130 183 0022 0895 ret 131 184 /* epilogue: frame size=0 */ 132 185 /* epilogue: noreturn */ 133 186 /* epilogue end (size=0) */ 134 187 /* function bmac_rx_pkt_set_buffer size 17 (17) */ 135 189 .Lscope2: 136 191 .stabd 78,0,0 137 193 .global bmac_rx_pkt_ready 138 195 bmac_rx_pkt_ready: 139 196 .stabd 46,0,0 140 81:../../src/net/bmac/bmac.c **** 141 82:../../src/net/bmac/bmac.c **** int8_t bmac_init (uint8_t chan) 142 83:../../src/net/bmac/bmac.c **** { 143 84:../../src/net/bmac/bmac.c **** uint8_t i; 144 85:../../src/net/bmac/bmac.c **** uint16_t a,b; 145 86:../../src/net/bmac/bmac.c **** 146 87:../../src/net/bmac/bmac.c **** tx_data_ready=0; 147 88:../../src/net/bmac/bmac.c **** // Set the one main rx buffer 148 89:../../src/net/bmac/bmac.c **** rx_buf_empty=0; 149 90:../../src/net/bmac/bmac.c **** bmac_rfRxInfo.pPayload = NULL; 150 91:../../src/net/bmac/bmac.c **** bmac_rfRxInfo.max_length = 0; 151 92:../../src/net/bmac/bmac.c **** 152 93:../../src/net/bmac/bmac.c **** // Setup the cc2420 chip 153 94:../../src/net/bmac/bmac.c **** rf_init (&bmac_rfRxInfo, chan, 0x2420, 0); 154 95:../../src/net/bmac/bmac.c **** 155 96:../../src/net/bmac/bmac.c **** FASTSPI_SETREG(CC2420_RSSI, 0xE580); // CCA THR=-25 156 97:../../src/net/bmac/bmac.c **** FASTSPI_SETREG(CC2420_TXCTRL, 0x80FF); // TX TURNAROUND = 128 us 157 98:../../src/net/bmac/bmac.c **** FASTSPI_SETREG(CC2420_RXCTRL1, 0x0A56); 158 99:../../src/net/bmac/bmac.c **** bmac_running=1; 159 100:../../src/net/bmac/bmac.c **** return NRK_OK; 160 101:../../src/net/bmac/bmac.c **** } 161 102:../../src/net/bmac/bmac.c **** 162 103:../../src/net/bmac/bmac.c **** int8_t bmac_tx_packet(uint8_t *buf, uint8_t len) 163 104:../../src/net/bmac/bmac.c **** { 164 105:../../src/net/bmac/bmac.c **** if(tx_data_ready==1) return NRK_ERROR; 165 106:../../src/net/bmac/bmac.c **** tx_data_ready=1; 166 107:../../src/net/bmac/bmac.c **** bmac_rfTxInfo.pPayload=buf; 167 108:../../src/net/bmac/bmac.c **** bmac_rfTxInfo.length=len; 168 109:../../src/net/bmac/bmac.c **** nrk_event_wait (SIG(BMAC_TX_PKT_DONE_EVENT)); 169 110:../../src/net/bmac/bmac.c **** return NRK_OK; 170 111:../../src/net/bmac/bmac.c **** } 171 112:../../src/net/bmac/bmac.c **** 172 113:../../src/net/bmac/bmac.c **** 173 114:../../src/net/bmac/bmac.c **** uint8_t *bmac_rx_pkt_get(uint8_t *len, uint8_t *rssi) 174 115:../../src/net/bmac/bmac.c **** { 175 116:../../src/net/bmac/bmac.c **** 176 117:../../src/net/bmac/bmac.c **** if(bmac_rx_pkt_ready()==0) 177 118:../../src/net/bmac/bmac.c **** { 178 119:../../src/net/bmac/bmac.c **** *len=0; 179 120:../../src/net/bmac/bmac.c **** *rssi=0; 180 121:../../src/net/bmac/bmac.c **** return NULL; 181 122:../../src/net/bmac/bmac.c **** } 182 123:../../src/net/bmac/bmac.c **** *len=bmac_rfRxInfo.length; 183 124:../../src/net/bmac/bmac.c **** *rssi=bmac_rfRxInfo.rssi; 184 125:../../src/net/bmac/bmac.c **** return bmac_rfRxInfo.pPayload; 185 126:../../src/net/bmac/bmac.c **** } 186 127:../../src/net/bmac/bmac.c **** 187 128:../../src/net/bmac/bmac.c **** int8_t bmac_rx_pkt_ready(void) 188 129:../../src/net/bmac/bmac.c **** { 189 198 .LM8: 190 199 .LFBB3: 191 200 /* prologue: frame size=0 */ 192 201 /* prologue end (size=0) */ 193 202 0024 20E0 ldi r18,lo8(0) 194 203 0026 30E0 ldi r19,hi8(0) 195 204 0028 8091 0000 lds r24,rx_buf_empty 196 205 002c 8823 tst r24 197 206 002e 01F4 brne .L9 198 208 .LM9: 199 209 0030 21E0 ldi r18,lo8(1) 200 210 0032 30E0 ldi r19,hi8(1) 201 211 .L9: 202 130:../../src/net/bmac/bmac.c **** return (!rx_buf_empty); 203 131:../../src/net/bmac/bmac.c **** } 204 213 .LM10: 205 214 0034 C901 movw r24,r18 206 215 /* epilogue: frame size=0 */ 207 216 0036 0895 ret 208 217 /* epilogue end (size=1) */ 209 218 /* function bmac_rx_pkt_ready size 10 (9) */ 210 220 .Lscope3: 211 222 .stabd 78,0,0 212 224 .global bmac_rx_pkt_release 213 226 bmac_rx_pkt_release: 214 227 .stabd 46,0,0 215 132:../../src/net/bmac/bmac.c **** 216 133:../../src/net/bmac/bmac.c **** int8_t bmac_rx_pkt_release(void) 217 134:../../src/net/bmac/bmac.c **** { 218 229 .LM11: 219 230 .LFBB4: 220 231 /* prologue: frame size=0 */ 221 232 /* prologue end (size=0) */ 222 135:../../src/net/bmac/bmac.c **** rx_buf_empty=1; 223 234 .LM12: 224 235 0038 81E0 ldi r24,lo8(1) 225 236 003a 8093 0000 sts rx_buf_empty,r24 226 136:../../src/net/bmac/bmac.c **** return NRK_OK; 227 137:../../src/net/bmac/bmac.c **** } 228 238 .LM13: 229 239 003e 81E0 ldi r24,lo8(1) 230 240 0040 90E0 ldi r25,hi8(1) 231 241 /* epilogue: frame size=0 */ 232 242 0042 0895 ret 233 243 /* epilogue end (size=1) */ 234 244 /* function bmac_rx_pkt_release size 6 (5) */ 235 246 .Lscope4: 236 248 .stabd 78,0,0 237 251 .global bmac_set_rx_check_rate 238 253 bmac_set_rx_check_rate: 239 254 .stabd 46,0,0 240 138:../../src/net/bmac/bmac.c **** 241 139:../../src/net/bmac/bmac.c **** void bmac_nw_task () 242 140:../../src/net/bmac/bmac.c **** { 243 141:../../src/net/bmac/bmac.c **** int8_t v; 244 142:../../src/net/bmac/bmac.c **** 245 143:../../src/net/bmac/bmac.c **** while(bmac_started()==0) nrk_wait_until_next_period(); 246 144:../../src/net/bmac/bmac.c **** 247 145:../../src/net/bmac/bmac.c **** while (1) { 248 146:../../src/net/bmac/bmac.c **** v=_bmac_channel_check(); 249 147:../../src/net/bmac/bmac.c **** if(v==0) 250 148:../../src/net/bmac/bmac.c **** { 251 149:../../src/net/bmac/bmac.c **** if(_bmac_rx()==1) 252 150:../../src/net/bmac/bmac.c **** nrk_event_signal (SIG(BMAC_RX_PKT_EVENT)); 253 151:../../src/net/bmac/bmac.c **** 254 152:../../src/net/bmac/bmac.c **** } 255 153:../../src/net/bmac/bmac.c **** if(tx_data_ready==1) 256 154:../../src/net/bmac/bmac.c **** { 257 155:../../src/net/bmac/bmac.c **** _bmac_tx(); 258 156:../../src/net/bmac/bmac.c **** } 259 157:../../src/net/bmac/bmac.c **** 260 158:../../src/net/bmac/bmac.c **** nrk_wait_until_next_period(); 261 159:../../src/net/bmac/bmac.c **** } 262 160:../../src/net/bmac/bmac.c **** 263 161:../../src/net/bmac/bmac.c **** } 264 162:../../src/net/bmac/bmac.c **** 265 163:../../src/net/bmac/bmac.c **** 266 164:../../src/net/bmac/bmac.c **** int8_t bmac_set_rx_check_rate(uint16_t ms) 267 165:../../src/net/bmac/bmac.c **** { 268 256 .LM14: 269 257 .LFBB5: 270 258 /* prologue: frame size=0 */ 271 259 /* prologue end (size=0) */ 272 166:../../src/net/bmac/bmac.c **** // Not YET implemented! 273 167:../../src/net/bmac/bmac.c **** // This function needs to check the wait_until_next_period 274 168:../../src/net/bmac/bmac.c **** // timeouts for the main checking task. 275 169:../../src/net/bmac/bmac.c **** return NRK_ERROR; 276 170:../../src/net/bmac/bmac.c **** } 277 261 .LM15: 278 262 0044 8FEF ldi r24,lo8(-1) 279 263 0046 9FEF ldi r25,hi8(-1) 280 264 /* epilogue: frame size=0 */ 281 265 0048 0895 ret 282 266 /* epilogue end (size=1) */ 283 267 /* function bmac_set_rx_check_rate size 3 (2) */ 284 269 .Lscope5: 285 271 .stabd 78,0,0 286 273 .global bmac_started 287 275 bmac_started: 288 276 .stabd 46,0,0 289 171:../../src/net/bmac/bmac.c **** 290 172:../../src/net/bmac/bmac.c **** int8_t bmac_started() 291 173:../../src/net/bmac/bmac.c **** { 292 278 .LM16: 293 279 .LFBB6: 294 280 /* prologue: frame size=0 */ 295 281 /* prologue end (size=0) */ 296 282 004a 8091 0000 lds r24,bmac_running 297 174:../../src/net/bmac/bmac.c **** return bmac_running; 298 175:../../src/net/bmac/bmac.c **** } 299 284 .LM17: 300 285 004e 9927 clr r25 301 286 0050 87FD sbrc r24,7 302 287 0052 9095 com r25 303 288 /* epilogue: frame size=0 */ 304 289 0054 0895 ret 305 290 /* epilogue end (size=1) */ 306 291 /* function bmac_started size 6 (5) */ 307 293 .Lscope6: 308 295 .stabd 78,0,0 309 297 .global bmac_task_config 310 299 bmac_task_config: 311 300 .stabd 46,0,0 312 176:../../src/net/bmac/bmac.c **** 313 177:../../src/net/bmac/bmac.c **** int8_t _bmac_channel_check() 314 178:../../src/net/bmac/bmac.c **** { 315 179:../../src/net/bmac/bmac.c **** int8_t val; 316 180:../../src/net/bmac/bmac.c **** rf_polling_rx_on(); 317 181:../../src/net/bmac/bmac.c **** nrk_spin_wait_us(250); 318 182:../../src/net/bmac/bmac.c **** val=CCA_IS_1; 319 183:../../src/net/bmac/bmac.c **** rf_rx_off(); 320 184:../../src/net/bmac/bmac.c **** return val; 321 185:../../src/net/bmac/bmac.c **** 322 186:../../src/net/bmac/bmac.c **** } 323 187:../../src/net/bmac/bmac.c **** 324 188:../../src/net/bmac/bmac.c **** int8_t _bmac_rx() 325 189:../../src/net/bmac/bmac.c **** { 326 190:../../src/net/bmac/bmac.c **** int8_t n; 327 191:../../src/net/bmac/bmac.c **** uint8_t cnt,i; 328 192:../../src/net/bmac/bmac.c **** 329 193:../../src/net/bmac/bmac.c **** 330 194:../../src/net/bmac/bmac.c **** rf_set_rx (&bmac_rfRxInfo, 25); 331 195:../../src/net/bmac/bmac.c **** rf_polling_rx_on (); 332 196:../../src/net/bmac/bmac.c **** cnt=0; 333 197:../../src/net/bmac/bmac.c **** while ((n = rf_rx_check ()) == 0) 334 198:../../src/net/bmac/bmac.c **** { 335 199:../../src/net/bmac/bmac.c **** cnt++; 336 200:../../src/net/bmac/bmac.c **** nrk_wait_until_next_period(); 337 201:../../src/net/bmac/bmac.c **** if(cnt>3) { 338 202:../../src/net/bmac/bmac.c **** #ifdef DEBUG 339 203:../../src/net/bmac/bmac.c **** printf( "rx timeout 1 %d\r\n",cnt ); 340 204:../../src/net/bmac/bmac.c **** #endif 341 205:../../src/net/bmac/bmac.c **** rf_rx_off(); 342 206:../../src/net/bmac/bmac.c **** return 0; 343 207:../../src/net/bmac/bmac.c **** } 344 208:../../src/net/bmac/bmac.c **** } 345 209:../../src/net/bmac/bmac.c **** if (n != 0) { 346 210:../../src/net/bmac/bmac.c **** n = 0; 347 211:../../src/net/bmac/bmac.c **** // Packet on its way 348 212:../../src/net/bmac/bmac.c **** cnt=0; 349 213:../../src/net/bmac/bmac.c **** while ((n = rf_polling_rx_packet ()) == 0) { 350 214:../../src/net/bmac/bmac.c **** cnt++; 351 215:../../src/net/bmac/bmac.c **** nrk_spin_wait_us(100); 352 216:../../src/net/bmac/bmac.c **** if (cnt > 50) { 353 217:../../src/net/bmac/bmac.c **** #ifdef DEBUG 354 218:../../src/net/bmac/bmac.c **** printf( "rx timeout 2\r\n" ); 355 219:../../src/net/bmac/bmac.c **** #endif 356 220:../../src/net/bmac/bmac.c **** rf_rx_off(); 357 221:../../src/net/bmac/bmac.c **** return 0; 358 222:../../src/net/bmac/bmac.c **** } 359 223:../../src/net/bmac/bmac.c **** } 360 224:../../src/net/bmac/bmac.c **** } 361 225:../../src/net/bmac/bmac.c **** rf_rx_off(); 362 226:../../src/net/bmac/bmac.c **** if (n == 1) { 363 227:../../src/net/bmac/bmac.c **** // CRC and checksum passed 364 228:../../src/net/bmac/bmac.c **** rx_buf_empty=0; 365 229:../../src/net/bmac/bmac.c **** #ifdef DEBUG 366 230:../../src/net/bmac/bmac.c **** printf( "BMAC: SNR= %d [",bmac_rfRxInfo.rssi ); 367 231:../../src/net/bmac/bmac.c **** for(i=0; i<bmac_rfRxInfo.length; i++ ) 368 232:../../src/net/bmac/bmac.c **** printf( "%c", bmac_rfRxInfo.pPayload[i]); 369 233:../../src/net/bmac/bmac.c **** printf( "]\r\n" ); 370 234:../../src/net/bmac/bmac.c **** #endif 371 235:../../src/net/bmac/bmac.c **** return 1; 372 236:../../src/net/bmac/bmac.c **** } else 373 237:../../src/net/bmac/bmac.c **** { 374 238:../../src/net/bmac/bmac.c **** #ifdef DEBUG 375 239:../../src/net/bmac/bmac.c **** printf( "CRC failed!\r\n" ); 376 240:../../src/net/bmac/bmac.c **** #endif 377 241:../../src/net/bmac/bmac.c **** return 0; 378 242:../../src/net/bmac/bmac.c **** } 379 243:../../src/net/bmac/bmac.c **** 380 244:../../src/net/bmac/bmac.c **** 381 245:../../src/net/bmac/bmac.c **** return 0; 382 246:../../src/net/bmac/bmac.c **** } 383 247:../../src/net/bmac/bmac.c **** 384 248:../../src/net/bmac/bmac.c **** 385 249:../../src/net/bmac/bmac.c **** int8_t _bmac_tx() 386 250:../../src/net/bmac/bmac.c **** { 387 251:../../src/net/bmac/bmac.c **** rf_test_mode(); 388 252:../../src/net/bmac/bmac.c **** rf_carrier_on(); 389 253:../../src/net/bmac/bmac.c **** nrk_wait_until_next_period(); 390 254:../../src/net/bmac/bmac.c **** rf_carrier_off(); 391 255:../../src/net/bmac/bmac.c **** rf_data_mode(); 392 256:../../src/net/bmac/bmac.c **** // send packet 393 257:../../src/net/bmac/bmac.c **** rf_rx_off(); 394 258:../../src/net/bmac/bmac.c **** rf_tx_packet (&bmac_rfTxInfo); 395 259:../../src/net/bmac/bmac.c **** rf_rx_off(); 396 260:../../src/net/bmac/bmac.c **** 397 261:../../src/net/bmac/bmac.c **** tx_data_ready=0; 398 262:../../src/net/bmac/bmac.c **** nrk_event_signal (SIG(BMAC_TX_PKT_DONE_EVENT)); 399 263:../../src/net/bmac/bmac.c **** return NRK_OK; 400 264:../../src/net/bmac/bmac.c **** } 401 265:../../src/net/bmac/bmac.c **** 402 266:../../src/net/bmac/bmac.c **** void bmac_task_config () 403 267:../../src/net/bmac/bmac.c **** { 404 302 .LM18: 405 303 .LFBB7: 406 304 /* prologue: frame size=0 */ 407 305 /* prologue end (size=0) */ 408 268:../../src/net/bmac/bmac.c **** bmac_task.task = bmac_nw_task; 409 307 .LM19: 410 308 0056 80E0 ldi r24,lo8(pm(bmac_nw_task)) 411 309 0058 90E0 ldi r25,hi8(pm(bmac_nw_task)) 412 310 005a 9093 0000 sts (bmac_task+5)+1,r25 413 311 005e 8093 0000 sts bmac_task+5,r24 414 269:../../src/net/bmac/bmac.c **** bmac_task.Ptos = (void *) &bmac_task_stack[BMAC_STACK_SIZE-1]; 415 313 .LM20: 416 314 0062 80E0 ldi r24,lo8(bmac_task_stack+127) 417 315 0064 90E0 ldi r25,hi8(bmac_task_stack+127) 418 316 0066 9093 0000 sts (bmac_task+1)+1,r25 419 317 006a 8093 0000 sts bmac_task+1,r24 420 270:../../src/net/bmac/bmac.c **** bmac_task.Pbos = (void *) &bmac_task_stack[0]; 421 319 .LM21: 422 320 006e 80E0 ldi r24,lo8(bmac_task_stack) 423 321 0070 90E0 ldi r25,hi8(bmac_task_stack) 424 322 0072 9093 0000 sts (bmac_task+3)+1,r25 425 323 0076 8093 0000 sts bmac_task+3,r24 426 271:../../src/net/bmac/bmac.c **** bmac_task.prio = 20; 427 325 .LM22: 428 326 007a 84E1 ldi r24,lo8(20) 429 327 007c 8093 0000 sts bmac_task+8,r24 430 272:../../src/net/bmac/bmac.c **** bmac_task.FirstActivation = TRUE; 431 329 .LM23: 432 330 0080 E0E0 ldi r30,lo8(bmac_task+7) 433 331 0082 F0E0 ldi r31,hi8(bmac_task+7) 434 332 0084 81E0 ldi r24,lo8(1) 435 333 0086 8083 st Z,r24 436 273:../../src/net/bmac/bmac.c **** bmac_task.Type = BASIC_TASK; 437 335 .LM24: 438 336 0088 8283 std Z+2,r24 439 274:../../src/net/bmac/bmac.c **** bmac_task.SchType = PREEMPTIVE; 440 338 .LM25: 441 339 008a 8383 std Z+3,r24 442 275:../../src/net/bmac/bmac.c **** bmac_task.period.secs = 0; 443 341 .LM26: 444 342 008c 1482 std Z+4,__zero_reg__ 445 343 008e 1582 std Z+5,__zero_reg__ 446 344 0090 1682 std Z+6,__zero_reg__ 447 345 0092 1782 std Z+7,__zero_reg__ 448 276:../../src/net/bmac/bmac.c **** bmac_task.period.nano_secs = 100 * NANOS_PER_MS; 449 347 .LM27: 450 348 0094 80E0 ldi r24,lo8(100000000) 451 349 0096 91EE ldi r25,hi8(100000000) 452 350 0098 A5EF ldi r26,hlo8(100000000) 453 351 009a B5E0 ldi r27,hhi8(100000000) 454 352 009c 8087 std Z+8,r24 455 353 009e 9187 std Z+9,r25 456 354 00a0 A287 std Z+10,r26 457 355 00a2 B387 std Z+11,r27 458 277:../../src/net/bmac/bmac.c **** bmac_task.cpu_reserve.secs = 15; // Way larger than period 459 357 .LM28: 460 358 00a4 8FE0 ldi r24,lo8(15) 461 359 00a6 90E0 ldi r25,hi8(15) 462 360 00a8 A0E0 ldi r26,hlo8(15) 463 361 00aa B0E0 ldi r27,hhi8(15) 464 362 00ac 8487 std Z+12,r24 465 363 00ae 9587 std Z+13,r25 466 364 00b0 A687 std Z+14,r26 467 365 00b2 B787 std Z+15,r27 468 278:../../src/net/bmac/bmac.c **** bmac_task.cpu_reserve.nano_secs = 0; 469 367 .LM29: 470 368 00b4 108A std Z+16,__zero_reg__ 471 369 00b6 118A std Z+17,__zero_reg__ 472 370 00b8 128A std Z+18,__zero_reg__ 473 371 00ba 138A std Z+19,__zero_reg__ 474 279:../../src/net/bmac/bmac.c **** bmac_task.offset.secs = 0; 475 373 .LM30: 476 374 00bc 148A std Z+20,__zero_reg__ 477 375 00be 158A std Z+21,__zero_reg__ 478 376 00c0 168A std Z+22,__zero_reg__ 479 377 00c2 178A std Z+23,__zero_reg__ 480 280:../../src/net/bmac/bmac.c **** bmac_task.offset.nano_secs = 0; 481 379 .LM31: 482 380 00c4 108E std Z+24,__zero_reg__ 483 381 00c6 118E std Z+25,__zero_reg__ 484 382 00c8 128E std Z+26,__zero_reg__ 485 383 00ca 138E std Z+27,__zero_reg__ 486 281:../../src/net/bmac/bmac.c **** nrk_activate_task (&bmac_task); 487 385 .LM32: 488 386 00cc CF01 movw r24,r30 489 387 00ce 0797 sbiw r24,7 490 388 00d0 0E94 0000 call nrk_activate_task 491 389 /* epilogue: frame size=0 */ 492 390 00d4 0895 ret 493 391 /* epilogue end (size=1) */ 494 392 /* function bmac_task_config size 64 (63) */ 495 394 .Lscope7: 496 396 .stabd 78,0,0 497 398 .global _bmac_tx 498 400 _bmac_tx: 499 401 .stabd 46,0,0 500 403 .LM33: 501 404 .LFBB8: 502 405 /* prologue: frame size=0 */ 503 406 /* prologue end (size=0) */ 504 408 .LM34: 505 409 00d6 0E94 0000 call rf_test_mode 506 411 .LM35: 507 412 00da 0E94 0000 call rf_carrier_on 508 414 .LM36: 509 415 00de 0E94 0000 call nrk_wait_until_next_period 510 417 .LM37: 511 418 00e2 0E94 0000 call rf_carrier_off 512 420 .LM38: 513 421 00e6 0E94 0000 call rf_data_mode 514 423 .LM39: 515 424 00ea 0E94 0000 call rf_rx_off 516 426 .LM40: 517 427 00ee 80E0 ldi r24,lo8(bmac_rfTxInfo) 518 428 00f0 90E0 ldi r25,hi8(bmac_rfTxInfo) 519 429 00f2 0E94 0000 call rf_tx_packet 520 431 .LM41: 521 432 00f6 0E94 0000 call rf_rx_off 522 434 .LM42: 523 435 00fa 1092 0000 sts tx_data_ready,__zero_reg__ 524 437 .LM43: 525 438 00fe 60E4 ldi r22,lo8(64) 526 439 0100 70E0 ldi r23,hi8(64) 527 440 0102 80E0 ldi r24,hlo8(64) 528 441 0104 90E0 ldi r25,hhi8(64) 529 442 0106 0E94 0000 call nrk_event_signal 530 444 .LM44: 531 445 010a 81E0 ldi r24,lo8(1) 532 446 010c 90E0 ldi r25,hi8(1) 533 447 /* epilogue: frame size=0 */ 534 448 010e 0895 ret 535 449 /* epilogue end (size=1) */ 536 450 /* function _bmac_tx size 29 (28) */ 537 452 .Lscope8: 538 454 .stabd 78,0,0 539 456 .global _bmac_channel_check 540 458 _bmac_channel_check: 541 459 .stabd 46,0,0 542 461 .LM45: 543 462 .LFBB9: 544 463 /* prologue: frame size=0 */ 545 464 0110 0F93 push r16 546 465 0112 1F93 push r17 547 466 /* prologue end (size=2) */ 548 468 .LM46: 549 469 0114 0E94 0000 call rf_polling_rx_on 550 471 .LM47: 551 472 0118 8AEF ldi r24,lo8(250) 552 473 011a 90E0 ldi r25,hi8(250) 553 474 011c 0E94 0000 call nrk_spin_wait_us 554 476 .LM48: 555 477 0120 09B1 in r16,41-0x20 556 479 .LM49: 557 480 0122 0E94 0000 call rf_rx_off 558 481 0126 1127 clr r17 559 482 0128 84E0 ldi r24,4 560 483 012a 1695 1: lsr r17 561 484 012c 0795 ror r16 562 485 012e 8A95 dec r24 563 486 0130 01F4 brne 1b 564 488 .LM50: 565 489 0132 C801 movw r24,r16 566 490 0134 8170 andi r24,lo8(1) 567 491 0136 9070 andi r25,hi8(1) 568 492 /* epilogue: frame size=0 */ 569 493 0138 1F91 pop r17 570 494 013a 0F91 pop r16 571 495 013c 0895 ret 572 496 /* epilogue end (size=3) */ 573 497 /* function _bmac_channel_check size 23 (18) */ 574 499 .Lscope9: 575 501 .stabd 78,0,0 576 503 .global _bmac_rx 577 505 _bmac_rx: 578 506 .stabd 46,0,0 579 508 .LM51: 580 509 .LFBB10: 581 510 /* prologue: frame size=0 */ 582 511 013e 0F93 push r16 583 512 0140 1F93 push r17 584 513 /* prologue end (size=2) */ 585 515 .LM52: 586 516 0142 69E1 ldi r22,lo8(25) 587 517 0144 80E0 ldi r24,lo8(bmac_rfRxInfo) 588 518 0146 90E0 ldi r25,hi8(bmac_rfRxInfo) 589 519 0148 0E94 0000 call rf_set_rx 590 521 .LM53: 591 522 014c 0E94 0000 call rf_polling_rx_on 592 523 0150 10E0 ldi r17,lo8(0) 593 524 0152 00C0 rjmp .L24 594 525 .L25: 595 527 .LM54: 596 528 0154 1F5F subi r17,lo8(-(1)) 597 530 .LM55: 598 531 0156 0E94 0000 call nrk_wait_until_next_period 599 533 .LM56: 600 534 015a 1430 cpi r17,lo8(4) 601 535 015c 01F0 breq .L42 602 536 .L24: 603 538 .LM57: 604 539 015e 0E94 0000 call rf_rx_check 605 540 0162 8823 tst r24 606 541 0164 01F0 breq .L25 607 542 0166 00C0 rjmp .L39 608 543 .L29: 609 545 .LM58: 610 546 0168 1F5F subi r17,lo8(-(1)) 611 548 .LM59: 612 549 016a 84E6 ldi r24,lo8(100) 613 550 016c 90E0 ldi r25,hi8(100) 614 551 016e 0E94 0000 call nrk_spin_wait_us 615 553 .LM60: 616 554 0172 1333 cpi r17,lo8(51) 617 555 0174 01F4 brne .L30 618 556 .L42: 619 558 .LM61: 620 559 0176 0E94 0000 call rf_rx_off 621 560 017a 00C0 rjmp .L41 622 561 .L39: 623 563 .LM62: 624 564 017c 10E0 ldi r17,lo8(0) 625 565 .L30: 626 567 .LM63: 627 568 017e 0E94 0000 call rf_polling_rx_packet 628 569 0182 082F mov r16,r24 629 570 0184 8823 tst r24 630 571 0186 01F0 breq .L29 631 573 .LM64: 632 574 0188 0E94 0000 call rf_rx_off 633 576 .LM65: 634 577 018c 0130 cpi r16,lo8(1) 635 578 018e 01F0 breq .L33 636 579 .L41: 637 580 0190 80E0 ldi r24,lo8(0) 638 581 0192 90E0 ldi r25,hi8(0) 639 582 0194 00C0 rjmp .L27 640 583 .L33: 641 585 .LM66: 642 586 0196 1092 0000 sts rx_buf_empty,__zero_reg__ 643 587 019a 81E0 ldi r24,lo8(1) 644 588 019c 90E0 ldi r25,hi8(1) 645 589 .L27: 646 590 /* epilogue: frame size=0 */ 647 591 019e 1F91 pop r17 648 592 01a0 0F91 pop r16 649 593 01a2 0895 ret 650 594 /* epilogue end (size=3) */ 651 595 /* function _bmac_rx size 51 (46) */ 652 601 .Lscope10: 653 603 .stabd 78,0,0 654 607 .global bmac_tx_packet 655 609 bmac_tx_packet: 656 610 .stabd 46,0,0 657 612 .LM67: 658 613 .LFBB11: 659 614 /* prologue: frame size=0 */ 660 615 /* prologue end (size=0) */ 661 616 01a4 9C01 movw r18,r24 662 618 .LM68: 663 619 01a6 8091 0000 lds r24,tx_data_ready 664 620 01aa 8130 cpi r24,lo8(1) 665 621 01ac 01F4 brne .L44 666 623 .LM69: 667 624 01ae 8FEF ldi r24,lo8(-1) 668 625 01b0 9FEF ldi r25,hi8(-1) 669 626 01b2 0895 ret 670 627 .L44: 671 629 .LM70: 672 630 01b4 81E0 ldi r24,lo8(1) 673 631 01b6 8093 0000 sts tx_data_ready,r24 674 633 .LM71: 675 634 01ba 3093 0000 sts (bmac_rfTxInfo+6)+1,r19 676 635 01be 2093 0000 sts bmac_rfTxInfo+6,r18 677 637 .LM72: 678 638 01c2 6093 0000 sts bmac_rfTxInfo+4,r22 679 640 .LM73: 680 641 01c6 60E4 ldi r22,lo8(64) 681 642 01c8 70E0 ldi r23,hi8(64) 682 643 01ca 80E0 ldi r24,hlo8(64) 683 644 01cc 90E0 ldi r25,hhi8(64) 684 645 01ce 0E94 0000 call nrk_event_wait 685 646 01d2 81E0 ldi r24,lo8(1) 686 647 01d4 90E0 ldi r25,hi8(1) 687 649 .LM74: 688 650 01d6 0895 ret 689 651 /* epilogue: frame size=0 */ 690 652 /* epilogue: noreturn */ 691 653 /* epilogue end (size=0) */ 692 654 /* function bmac_tx_packet size 26 (26) */ 693 656 .Lscope11: 694 658 .stabd 78,0,0 695 660 .global bmac_wait_until_rx_packet 696 662 bmac_wait_until_rx_packet: 697 663 .stabd 46,0,0 698 665 .LM75: 699 666 .LFBB12: 700 667 /* prologue: frame size=0 */ 701 668 /* prologue end (size=0) */ 702 670 .LM76: 703 671 01d8 60E2 ldi r22,lo8(32) 704 672 01da 70E0 ldi r23,hi8(32) 705 673 01dc 80E0 ldi r24,hlo8(32) 706 674 01de 90E0 ldi r25,hhi8(32) 707 675 01e0 0E94 0000 call nrk_event_wait 708 677 .LM77: 709 678 01e4 81E0 ldi r24,lo8(1) 710 679 01e6 90E0 ldi r25,hi8(1) 711 680 /* epilogue: frame size=0 */ 712 681 01e8 0895 ret 713 682 /* epilogue end (size=1) */ 714 683 /* function bmac_wait_until_rx_packet size 9 (8) */ 715 685 .Lscope12: 716 687 .stabd 78,0,0 717 690 .global bmac_init 718 692 bmac_init: 719 693 .stabd 46,0,0 720 695 .LM78: 721 696 .LFBB13: 722 697 /* prologue: frame size=0 */ 723 698 /* prologue end (size=0) */ 724 700 .LM79: 725 701 01ea 1092 0000 sts tx_data_ready,__zero_reg__ 726 703 .LM80: 727 704 01ee 1092 0000 sts rx_buf_empty,__zero_reg__ 728 706 .LM81: 729 707 01f2 1092 0000 sts (bmac_rfRxInfo+7)+1,__zero_reg__ 730 708 01f6 1092 0000 sts bmac_rfRxInfo+7,__zero_reg__ 731 710 .LM82: 732 711 01fa 1092 0000 sts bmac_rfRxInfo+6,__zero_reg__ 733 713 .LM83: 734 714 01fe 20E0 ldi r18,lo8(0) 735 715 0200 30E0 ldi r19,hi8(0) 736 716 0202 40E2 ldi r20,lo8(9248) 737 717 0204 54E2 ldi r21,hi8(9248) 738 718 0206 682F mov r22,r24 739 719 0208 80E0 ldi r24,lo8(bmac_rfRxInfo) 740 720 020a 90E0 ldi r25,hi8(bmac_rfRxInfo) 741 721 020c 0E94 0000 call rf_init 742 723 .LM84: 743 724 0210 4098 cbi 40-0x20,0 744 725 0212 83E1 ldi r24,lo8(19) 745 726 0214 8EBD out 78-0x20,r24 746 727 .L51: 747 729 .LM85: 748 730 0216 0DB4 in __tmp_reg__,77-0x20 749 731 0218 07FE sbrs __tmp_reg__,7 750 732 021a 00C0 rjmp .L51 751 733 021c 85EE ldi r24,lo8(-27) 752 734 021e 8EBD out 78-0x20,r24 753 735 .L53: 754 736 0220 0DB4 in __tmp_reg__,77-0x20 755 737 0222 07FE sbrs __tmp_reg__,7 756 738 0224 00C0 rjmp .L53 757 739 0226 80E8 ldi r24,lo8(-128) 758 740 0228 8EBD out 78-0x20,r24 759 741 .L55: 760 742 022a 0DB4 in __tmp_reg__,77-0x20 761 743 022c 07FE sbrs __tmp_reg__,7 762 744 022e 00C0 rjmp .L55 763 745 0230 409A sbi 40-0x20,0 764 747 .LM86: 765 748 0232 4098 cbi 40-0x20,0 766 749 0234 85E1 ldi r24,lo8(21) 767 750 0236 8EBD out 78-0x20,r24 768 751 .L57: 769 752 0238 0DB4 in __tmp_reg__,77-0x20 770 753 023a 07FE sbrs __tmp_reg__,7 771 754 023c 00C0 rjmp .L57 772 755 023e 80E8 ldi r24,lo8(-128) 773 756 0240 8EBD out 78-0x20,r24 774 757 .L59: 775 758 0242 0DB4 in __tmp_reg__,77-0x20 776 759 0244 07FE sbrs __tmp_reg__,7 777 760 0246 00C0 rjmp .L59 778 761 0248 8FEF ldi r24,lo8(-1) 779 762 024a 8EBD out 78-0x20,r24 780 763 .L61: 781 764 024c 0DB4 in __tmp_reg__,77-0x20 782 765 024e 07FE sbrs __tmp_reg__,7 783 766 0250 00C0 rjmp .L61 784 767 0252 409A sbi 40-0x20,0 785 769 .LM87: 786 770 0254 4098 cbi 40-0x20,0 787 771 0256 87E1 ldi r24,lo8(23) 788 772 0258 8EBD out 78-0x20,r24 789 773 .L63: 790 774 025a 0DB4 in __tmp_reg__,77-0x20 791 775 025c 07FE sbrs __tmp_reg__,7 792 776 025e 00C0 rjmp .L63 793 777 0260 8AE0 ldi r24,lo8(10) 794 778 0262 8EBD out 78-0x20,r24 795 779 .L65: 796 780 0264 0DB4 in __tmp_reg__,77-0x20 797 781 0266 07FE sbrs __tmp_reg__,7 798 782 0268 00C0 rjmp .L65 799 783 026a 86E5 ldi r24,lo8(86) 800 784 026c 8EBD out 78-0x20,r24 801 785 .L67: 802 786 026e 0DB4 in __tmp_reg__,77-0x20 803 787 0270 07FE sbrs __tmp_reg__,7 804 788 0272 00C0 rjmp .L67 805 789 0274 409A sbi 40-0x20,0 806 791 .LM88: 807 792 0276 81E0 ldi r24,lo8(1) 808 793 0278 8093 0000 sts bmac_running,r24 809 795 .LM89: 810 796 027c 81E0 ldi r24,lo8(1) 811 797 027e 90E0 ldi r25,hi8(1) 812 798 /* epilogue: frame size=0 */ 813 799 0280 0895 ret 814 800 /* epilogue end (size=1) */ 815 801 /* function bmac_init size 76 (75) */ 816 803 .Lscope13: 817 805 .stabd 78,0,0 818 807 .global bmac_nw_task 819 809 bmac_nw_task: 820 810 .stabd 46,0,0 821 812 .LM90: 822 813 .LFBB14: 823 814 /* prologue: frame size=0 */ 824 815 /* prologue end (size=0) */ 825 816 0282 00C0 rjmp .L89 826 817 .L90: 827 819 .LM91: 828 820 0284 0E94 0000 call nrk_wait_until_next_period 829 821 .L89: 830 822 0288 8091 0000 lds r24,bmac_running 831 823 028c 8823 tst r24 832 824 028e 01F0 breq .L90 833 825 .L98: 834 827 .LM92: 835 828 0290 0E94 0000 call _bmac_channel_check 836 830 .LM93: 837 831 0294 8823 tst r24 838 832 0296 01F4 brne .L92 839 834 .LM94: 840 835 0298 0E94 0000 call _bmac_rx 841 836 029c 8130 cpi r24,lo8(1) 842 837 029e 01F4 brne .L92 843 839 .LM95: 844 840 02a0 60E2 ldi r22,lo8(32) 845 841 02a2 70E0 ldi r23,hi8(32) 846 842 02a4 80E0 ldi r24,hlo8(32) 847 843 02a6 90E0 ldi r25,hhi8(32) 848 844 02a8 0E94 0000 call nrk_event_signal 849 845 .L92: 850 847 .LM96: 851 848 02ac 8091 0000 lds r24,tx_data_ready 852 849 02b0 8130 cpi r24,lo8(1) 853 850 02b2 01F4 brne .L95 854 852 .LM97: 855 853 02b4 0E94 0000 call _bmac_tx 856 854 .L95: 857 856 .LM98: 858 857 02b8 0E94 0000 call nrk_wait_until_next_period 859 858 02bc 00C0 rjmp .L98 860 859 /* epilogue: frame size=0 */ 861 860 /* epilogue: noreturn */ 862 861 /* epilogue end (size=0) */ 863 862 /* function bmac_nw_task size 30 (30) */ 864 864 .Lscope14: 865 866 .stabd 78,0,0 866 870 .global bmac_rx_pkt_get 867 872 bmac_rx_pkt_get: 868 873 .stabd 46,0,0 869 875 .LM99: 870 876 .LFBB15: 871 877 /* prologue: frame size=0 */ 872 878 /* prologue end (size=0) */ 873 879 02be FC01 movw r30,r24 874 880 02c0 DB01 movw r26,r22 875 882 .LM100: 876 883 02c2 8091 0000 lds r24,rx_buf_empty 877 884 02c6 8823 tst r24 878 885 02c8 01F0 breq .L100 879 887 .LM101: 880 888 02ca 1082 st Z,__zero_reg__ 881 890 .LM102: 882 891 02cc 1C92 st X,__zero_reg__ 883 892 02ce 80E0 ldi r24,lo8(0) 884 893 02d0 90E0 ldi r25,hi8(0) 885 894 02d2 0895 ret 886 895 .L100: 887 897 .LM103: 888 898 02d4 8091 0000 lds r24,bmac_rfRxInfo+5 889 899 02d8 8083 st Z,r24 890 901 .LM104: 891 902 02da 8091 0000 lds r24,bmac_rfRxInfo+10 892 903 02de 8C93 st X,r24 893 905 .LM105: 894 906 02e0 8091 0000 lds r24,bmac_rfRxInfo+7 895 907 02e4 9091 0000 lds r25,(bmac_rfRxInfo+7)+1 896 909 .LM106: 897 910 02e8 0895 ret 898 911 /* epilogue: frame size=0 */ 899 912 /* epilogue: noreturn */ 900 913 /* epilogue end (size=0) */ 901 914 /* function bmac_rx_pkt_get size 22 (22) */ 902 916 .Lscope15: 903 918 .stabd 78,0,0 904 919 .comm nrk_idle_task_stk,128,1 905 920 .comm nrk_kernel_stk_ptr,2,1 906 921 .comm _nrk_prev_timer_val,1,1 907 922 .comm _nrk_time_trigger,1,1 908 923 .comm error_task,1,1 909 924 .comm error_num,1,1 910 925 .comm bmac_task,35,1 911 926 .comm bmac_task_stack,128,1 912 927 .comm bmac_rfRxInfo,11,1 913 928 .comm bmac_rfTxInfo,9,1 914 929 .comm tx_data_ready,1,1 915 930 .comm rx_buf_empty,1,1 916 931 .comm bmac_running,1,1 917 946 .Letext0: 918 947 /* File "../../src/net/bmac/bmac.c": code 373 = 0x0175 ( 354), prologues 4, epilogues 15 */ 863 919 DEFINED SYMBOLS 864 920 *ABS*:00000000 bmac.c 865 /tmp/ccK F58UX.s:3*ABS*:0000003f __SREG__866 /tmp/ccK F58UX.s:4*ABS*:0000003e __SP_H__867 /tmp/ccK F58UX.s:5*ABS*:0000003d __SP_L__868 /tmp/ccK F58UX.s:6*ABS*:00000000 __tmp_reg__869 /tmp/ccK F58UX.s:7*ABS*:00000001 __zero_reg__870 /tmp/ccK F58UX.s:132.text:00000000 rf_rx_callback871 /tmp/ccK F58UX.s:151 .text:00000002 bmac_rx_pkt_set_buffer921 /tmp/ccKbOwyV.s:2 *ABS*:0000003f __SREG__ 922 /tmp/ccKbOwyV.s:3 *ABS*:0000003e __SP_H__ 923 /tmp/ccKbOwyV.s:4 *ABS*:0000003d __SP_L__ 924 /tmp/ccKbOwyV.s:5 *ABS*:00000000 __tmp_reg__ 925 /tmp/ccKbOwyV.s:6 *ABS*:00000001 __zero_reg__ 926 /tmp/ccKbOwyV.s:131 .text:00000000 rf_rx_callback 927 /tmp/ccKbOwyV.s:151 .text:00000002 bmac_rx_pkt_set_buffer 872 928 *COM*:0000000b bmac_rfRxInfo 873 929 *COM*:00000001 rx_buf_empty 874 /tmp/ccK F58UX.s:194.text:00000024 bmac_rx_pkt_ready875 /tmp/ccK F58UX.s:224.text:00000038 bmac_rx_pkt_release876 /tmp/ccK F58UX.s:250.text:00000044 bmac_set_rx_check_rate877 /tmp/ccK F58UX.s:271.text:0000004a bmac_started930 /tmp/ccKbOwyV.s:195 .text:00000024 bmac_rx_pkt_ready 931 /tmp/ccKbOwyV.s:226 .text:00000038 bmac_rx_pkt_release 932 /tmp/ccKbOwyV.s:253 .text:00000044 bmac_set_rx_check_rate 933 /tmp/ccKbOwyV.s:275 .text:0000004a bmac_started 878 934 *COM*:00000001 bmac_running 879 /tmp/ccK F58UX.s:294.text:00000056 bmac_task_config880 /tmp/ccK F58UX.s:787 .text:000002a4bmac_nw_task935 /tmp/ccKbOwyV.s:299 .text:00000056 bmac_task_config 936 /tmp/ccKbOwyV.s:809 .text:00000282 bmac_nw_task 881 937 *COM*:00000023 bmac_task 882 938 *COM*:00000080 bmac_task_stack 883 /tmp/ccK F58UX.s:392 .text:00000108_bmac_tx939 /tmp/ccKbOwyV.s:400 .text:000000d6 _bmac_tx 884 940 *COM*:00000009 bmac_rfTxInfo 885 941 *COM*:00000001 tx_data_ready 886 /tmp/ccK F58UX.s:449 .text:00000142_bmac_channel_check887 /tmp/ccK F58UX.s:495 .text:00000170_bmac_rx888 /tmp/ccK F58UX.s:599 .text:000001d8bmac_tx_packet889 /tmp/ccK F58UX.s:651 .text:0000020cbmac_wait_until_rx_packet890 /tmp/ccK F58UX.s:680 .text:0000021ebmac_init891 /tmp/ccK F58UX.s:849 .text:000002e0bmac_rx_pkt_get942 /tmp/ccKbOwyV.s:458 .text:00000110 _bmac_channel_check 943 /tmp/ccKbOwyV.s:505 .text:0000013e _bmac_rx 944 /tmp/ccKbOwyV.s:609 .text:000001a4 bmac_tx_packet 945 /tmp/ccKbOwyV.s:662 .text:000001d8 bmac_wait_until_rx_packet 946 /tmp/ccKbOwyV.s:692 .text:000001ea bmac_init 947 /tmp/ccKbOwyV.s:872 .text:000002be bmac_rx_pkt_get 892 948 *COM*:00000080 nrk_idle_task_stk 893 949 *COM*:00000002 nrk_kernel_stk_ptr -
nano-RK/src/platform/firefly2_2/include/hal_firefly2_2.h
r34 r38 162 162 do { \ 163 163 MCUCR |= BM(PUD); \ 164 DDRB = BM(MOSI) | BM(SCK); \164 DDRB = BM(MOSI) | BM(SCK); \ 165 165 PORTB = BM(MOSI) | BM(SCK) | BM(SPI_SS); \ 166 166 DDRC = BM(CSN); \ … … 171 171 PORTA = BM(RESET_N); \ 172 172 } while (0) 173 174 173 /* 175 174 #define PORT_INIT() \ -
nano-RK/src/radio/cc2420/source/basic_rf.c
r15 r38 105 105 DISABLE_GLOBAL_INT(); 106 106 107 108 107 // Register modifications 109 108 FASTSPI_STROBE(CC2420_SXOSCON);
Note: See TracChangeset
for help on using the changeset viewer.
