From: rarseverino Date: Tue, 25 Aug 2009 18:12:22 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: rc_6_tinyos_2_1_1~325 X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=commitdiff_plain;h=d99e9e4b31b1b6459b3811a5257a0c00821ab314;p=tinyos-2.x.git *** empty log message *** --- diff --git a/tos/lib/net/zigbee/cc2420/CC2420Config.nc b/tos/lib/net/zigbee/cc2420/CC2420Config.nc new file mode 100644 index 00000000..972f37a0 --- /dev/null +++ b/tos/lib/net/zigbee/cc2420/CC2420Config.nc @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2005-2006 Arch Rock Corporation + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * - Neither the name of the Arch Rock Corporation nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * ARCHED ROCK OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE + */ + +/** + * An HAL abstraction of the ChipCon CC2420 radio. This abstraction + * deals specifically with radio configurations. All get() and set() + * commands are single-phase. After setting some values, a call to + * sync() is required for the changes to propagate to the cc2420 + * hardware chip. This interface allows setting multiple parameters + * before calling sync(). + * + * @author Jonathan Hui + * @version $Revision$ $Date$ + */ + +interface CC2420Config { + + /** + * Sync configuration changes with the radio hardware. This only + * applies to set commands below. + * + * @return SUCCESS if the request was accepted, FAIL otherwise. + */ + command error_t sync(); + event void syncDone( error_t error ); + + /** + * Change the channel of the radio, between 11 and 26 + */ + command uint8_t getChannel(); + command void setChannel( uint8_t channel ); + + /** + * Change the short address of the radio. + */ + async command uint16_t getShortAddr(); + command void setShortAddr( uint16_t address ); + + /** + * Change the PAN address of the radio. + */ + async command uint16_t getPanAddr(); + command void setPanAddr( uint16_t address ); + + + /** + * @param on TRUE to turn address recognition on, FALSE to turn it off + */ + command void setAddressRecognition(bool on); + + /** + * @return TRUE if address recognition is enabled + */ + async command bool isAddressRecognitionEnabled(); + + /** + * Sync must be called for acknowledgement changes to take effect + * @param enableAutoAck TRUE to enable auto acknowledgements + * @param hwAutoAck TRUE to default to hardware auto acks, FALSE to + * default to software auto acknowledgements + */ + command void setAutoAck(bool enableAutoAck, bool hwAutoAck); + + /** + * @return TRUE if hardware auto acks are the default, FALSE if software + * acks are the default + */ + async command bool isHwAutoAckDefault(); + + /** + * @return TRUE if auto acks are enabled + */ + async command bool isAutoAckEnabled(); + +} diff --git a/tos/lib/net/zigbee/ieee802154/includes/PrintfUART.h b/tos/lib/net/zigbee/ieee802154/includes/PrintfUART.h deleted file mode 100644 index f19f13bf..00000000 --- a/tos/lib/net/zigbee/ieee802154/includes/PrintfUART.h +++ /dev/null @@ -1,336 +0,0 @@ -/* - * Copyright (c) 2005 - * The President and Fellows of Harvard College. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/* - * Writes printf like output to the UART. - * This works only on the AVR and MSP430 Microcontrollers! - *

- * Note: For AVR we explicitly place the print statements in ROM; for - * MSP430 this is done by default! For AVR, if we don't place it - * explicitely in ROM, the statements will go in RAM, which will - * quickly cause a descent size program to run out of RAM. By default - * it doesn't disable the interupts; disabling the interupts when - * writing to the UART, slows down/makes the mote quite unresponsive, - * and can lead to problems! If you wish to disable all printfs to - * the UART, then comment the flag: PRINTFUART_ENABLED. - - *

- * How to use:
- *   // (1) Call printfUART_init() from your initialization function 
- *   //     to initialize the UART
- *   printfUART_init();
- *   // (2) Set your UART client to the correct baud rate.  Look at 
- *   //     the comments in printfUART_init(), to figure out what 
- *   //     baud to use for your particular mote
- *
- *   // (3) Send printf statements like this:
- *   printfUART("Hello World, we are in year= %i\n", 2004);
- *
- * Examples and caveats:
- *   // (1) - If no parameters are passed, then the second quotes 
- *            are required because of how the macro is defined
- *   printfUART("Timer fired\n", ""); 
- *   // (2) - Must use curly braces in single section statements
- *   if (x < 3)
- *       {printfUART("The value of x is %i\n", x);}
- *   // (3) - Otherwise it more or less works like regular printf
- *   printfUART("\nThe value of x=%i, and y=%i\n", x, y); 
- * 
- *
URL: http://www.eecs.harvard.edu/~konrad/projects/motetrack
- * @author Konrad Lorincz - * @version 2.0, January 5, 2005 - */ -#ifndef PRINTFUART_H -#define PRINTFUART_H -#include -//#include - -// Comment out the line below to DISABLE printf statements. -//#define PRINTFUART_ENABLED - - -// ------------------------------------------------------------------- -#ifdef PRINTFUART_ENABLED - #define DEBUGBUF_SIZE 256 - char debugbuf[DEBUGBUF_SIZE]; - char debugbufROMtoRAM[DEBUGBUF_SIZE]; - - #if defined(PLATFORM_MICAZ) || defined(PLATFORM_MICA2) || defined(PLATFORM_MICA2DOT) - #define printfUART(__format, __args...) { \ - static const char strROM[] PROGMEM = __format; \ - strcpy_P((char*) &debugbufROMtoRAM, (PGM_P) &strROM); \ - sprintf(debugbuf, debugbufROMtoRAM, __args); \ - writedebug(); \ - } - #else // assume MSP430 architecture (e.g. TelosA, TelosB, etc.) - #define printfUART(__format, __args...) { \ - sprintf(debugbuf, __format, __args); \ - writedebug(); \ - } - #endif -#else - #define printfUART(__format, __args...) - void printfUART_init() {} -#endif - -#define NOprintfUART(__format, __args...) - - -/** Used for terminating the program from a non-nesc file. Calling exit(1) - * from a non-nesc file doesn't terminate the program immeditely - */ -static int EXIT_PROGRAM = 0; - - - -// ------------------------------------------------------------------- -#ifdef PRINTFUART_ENABLED - -/** - * Initialize the UART port. Call this from your startup routine. - */ -#define printfUART_init() {atomic printfUART_init_private();} -void printfUART_init_private() -{ - #if defined(PLATFORM_MICAZ) || defined(PLATFORM_MICA2) - // 56K baud - outp(0,UBRR0H); - outp(15, UBRR0L); //set baud rate - outp((1<> 8) & 0x0FF; - U1MCTL = l_mctl; - } - else { - U1BR0 = 0x03; // 9600 baud - U1BR1 = 0x00; - U1MCTL = 0x4A; - } - - ME2 &= ~USPIE1; // USART1 SPI module disable - ME2 |= (UTXE1 | URXE1); // USART1 UART module enable - - U1CTL &= ~SWRST; - - IFG2 &= ~(UTXIFG1 | URXIFG1); - IE2 &= ~(UTXIE1 | URXIE1); // interrupt disabled - - #endif - #endif -} - -#if defined(PLATFORM_MICAZ) || defined(PLATFORM_MICA2) || defined(PLATFORM_MICA2DOT) -#else // assume AVR architecture (e.g. TelosA, TelosB) - bool isTxIntrPending() - { - if (U1TCTL & TXEPT) { - return TRUE; - } - return FALSE; - } -#endif - -/** - * Outputs a char to the UART. - */ -void UARTPutChar(char c) -{ - if (c == '\n') - UARTPutChar('\r'); - - - #if defined(PLATFORM_MICAZ) || defined(PLATFORM_MICA2) || defined(PLATFORM_MICA2DOT) - loop_until_bit_is_set(UCSR0A, UDRE); - outb(UDR0,c); - #else // assume AVR architecture (e.g. TelosA, TelosB) - U1TXBUF = c; - while( !isTxIntrPending() ) - continue; - #endif -} - -/** - * Outputs the entire debugbuf to the UART, or until it encounters '\0'. - */ -void writedebug() -{ - uint16_t i = 0; - - while (debugbuf[i] != '\0' && i < DEBUGBUF_SIZE) - UARTPutChar(debugbuf[i++]); -} - - - -/** - * Simplified sprintf - */ -#define SCRATCH 16 -int sprintf(uint8_t *buf, const uint8_t *format, ...) -{ - uint8_t scratch[SCRATCH]; - uint8_t format_flag; - uint32_t u_val=0, base;//modified by Andre Cunha - uint8_t *ptr; - va_list ap; - - //memset(scratch, 0, SCRATCH); - - buf[0] = '\0'; // KLDEBUG - fixes subtle bug ... - va_start (ap, format); - for (;;){ - while ((format_flag = *format++) != '%'){ // Until '%' or '\0' - if (!format_flag) {va_end (ap); return (0);} - *buf = format_flag; buf++; *buf=0; - } - - switch (format_flag = *format++){ - - case 'c': - format_flag = va_arg(ap,int); - default: - *buf = format_flag; buf++; *buf=0; - continue; - case 'S': - case 's': - ptr = va_arg(ap,char *); - strcat(buf, ptr); - continue; - case 'o': - base = 8; - *buf = '0'; buf++; *buf=0; - goto CONVERSION_LOOP; - case 'i': - if (((int)u_val) < 0){ - u_val = - u_val; - *buf = '-'; buf++; *buf=0; - } - base = 10; - goto CONVERSION_LOOP; - // no break -> run into next case - case 'd'://added by Andre Cunha - if (((int32_t)u_val) < 0){ - u_val = - u_val; - *buf = '-'; buf++; *buf=0; - } - - base = 10; - goto CONVERSION_LOOP32; - case 'u': - base = 10; - goto CONVERSION_LOOP; - case 'x': - base = 16; - goto CONVERSION_LOOP; - - case 'y'://unsigned int 32 bits hexadecimal//added by Andre Cunha - base = 16; - goto CONVERSION_LOOP32; - - CONVERSION_LOOP: - u_val = va_arg(ap,int); - ptr = scratch + SCRATCH; - *--ptr = 0; - do { - char ch = u_val % base + '0'; - if (ch > '9') - ch += 'a' - '9' - 1; - *--ptr = ch; - u_val /= base; - } while (u_val); - strcat(buf, ptr); - buf += strlen(ptr); - break; - - CONVERSION_LOOP32: - u_val = va_arg(ap,int32_t); - ptr = scratch + SCRATCH; - *--ptr = 0; - do { - char ch = u_val % base + '0'; - if (ch > '9') - ch += 'a' - '9' - 1; - *--ptr = ch; - u_val /= base; - } while (u_val); - strcat(buf, ptr); - buf += strlen(ptr); - } - } -} - - -#endif // PRINTFUART_ENABLED -// ------------------------------------------------------------------- - -#endif // PRINTFUART_H -