[Tinyos-help] tinyos tutorial lesson 7
jurin dan
jurin1er at hotmail.com
Tue Aug 1 13:44:51 PDT 2006
hi,
i've done what u advise to me. and one more thing, i have add Sounder in
component list in the file SimpleCmd.nc before it work.
thx
>From: Michael Schippling <schip at santafe.edu>
>To: jurin dan <jurin1er at hotmail.com>
>CC: tinyos-help at Millennium.Berkeley.EDU
>Subject: Re: [Tinyos-help] tinyos tutorial lesson 7
>Date: Sun, 30 Jul 2006 16:48:19 -0600
>
>You probably missed adding Sounder to the SimpleCmd.nc config file.
>Follow the example of PotC or LedsC in that file and I think you
>may have more success...
>MS
>
>
>jurin dan wrote:
>>
>> hi
>>
>> i'm trying to do the exercise of lesson 7 of tinyos tutorial.
>> i've got a bug in step two which consist of In SimpleCmdM.nc, to
>>initialize the sounder and add a new command action that will turn the
>>sounder on and off.
>>
>> i've joined to the mail the file simplecmdM.nc that i modified.
>>changes were made at line 64, 80, 124-130 and 148.
>>
>> when i compile simplecmd i got this error message:
>>
>> $ make install mica2
>> compiling Bcast to a mica2 binary
>>ncc -o build/mica2/main.exe -Os -board=micasb -target=mica2
>>-DCC1K_DEF_FREQ=9164
>>00000 -Wall -Wshadow -DDEF_TOS_AM_GROUP=0x7d -Wnesc-all
>>-finline-limit=100000 -f
>>nesc-cfile=build/mica2/app.c Bcast.nc -lm
>>SimpleCmd.nc:56: cannot find `Sounder'
>>make: *** [build/mica2/main.exe] Error 1
>>
>>
>> i'm trying to fix the bug. help me please.
>>
>>_________________________________________________________________
>>Play Q6 for your chance to WIN great prizes.
>>http://q6trivia.imagine-live.com/enca/landing
>>// $Id: SimpleCmdM.nc,v 1.4 2004/05/04 22:39:07 idgay Exp $
>>
>>/* tab:4
>>* "Copyright (c) 2000-2003 The Regents of the University of California.
>>* All rights reserved.
>>*
>>* Permission to use, copy, modify, and distribute this software and its
>>* documentation for any purpose, without fee, and without written
>>agreement is
>>* hereby granted, provided that the above copyright notice, the following
>>* two paragraphs and the author appear in all copies of this software.
>>*
>>* IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
>>FOR
>>* DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
>>OUT
>>* OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE
>>UNIVERSITY OF
>>* CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>>*
>>* THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
>>* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
>>* AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER
>>IS
>>* ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION
>>TO
>>* PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
>>*
>>* Copyright (c) 2002-2003 Intel Corporation
>>* All rights reserved.
>>*
>>* This file is distributed under the terms in the attached INTEL-LICENSE
>>* file. If you do not find these files, copies can be found by writing to
>>* Intel Research Berkeley, 2150 Shattuck Avenue, Suite 1300, Berkeley, CA,
>>* 94704. Attention: Intel License Inquiry.
>>*/
>>/*
>>* Author: Robert Szewczyk, Su Ping
>>*
>>* $\Id$
>>*/
>>
>>/**
>>* SimpleCmdM is a tiny OS application module.
>>* This module demonstrates a simple command interpreter for the TinyOS
>>* tutorial. The module receives a command message from the radio, which
>>* is passed to the ProcessCmd interface for processing. A task is posted
>>* to process the command. The command packet contains a one-byte
>>* 'action' field specifying which action to take; as a simple version,
>>* this module can only interpret the follwoing commands:
>>* Led_on (action = 1), Led_off (2), radio_quieter (3), and radio_louder
>>(4).
>>*
>>* This module also implements the ProcessCmd interface.
>>* @author Robert Szewczyk
>>* @author Su Ping
>>**/
>>includes SimpleCmdMsg;
>>
>>module SimpleCmdM {
>> provides {
>> interface StdControl;
>> interface ProcessCmd;
>> }
>>
>> uses {
>> interface Leds;
>> interface Pot;
>> interface ReceiveMsg as ReceiveCmdMsg;
>> interface StdControl as CommControl;
>> interface StdControl as Sounder;
>> }
>>}
>>
>>/*
>>* Module Implementation
>>*/
>>
>>
>>implementation
>>{
>>
>> // module scoped variables
>> TOS_MsgPtr msg;
>> int8_t pending;
>> TOS_Msg buf;
>> bool sound=TRUE;
>>
>>
>> /**
>> *
>> * This task evaluates a command and execute it if it is a supported
>> * command.The protocol for the command interpreter is that
>> * it operates on the message and returns a (potentially modified)
>> * message to the calling layer, as well a status word for whether
>> * the message should be futher processed.
>> *
>> * @return Return: None
>> **/
>>
>> task void cmdInterpret() {
>> struct SimpleCmdMsg * cmd = (struct SimpleCmdMsg *) msg->data;
>> // do local packet modifications: update the hop count and packet
>>source
>> cmd->hop_count++;
>> cmd->source = TOS_LOCAL_ADDRESS;
>>
>> // Interpret the command: Display the level on red and green led
>> if (cmd->hop_count & 0x1)
>> call Leds.greenOn();
>> else
>> call Leds.greenOff();
>> if (cmd->hop_count & 0x2)
>> call Leds.redOn();
>> else
>> call Leds.redOff();
>>
>> // Execute the command
>> switch (cmd->action) {
>> case LED_ON:
>> call Leds.yellowOn();
>> break;
>> case LED_OFF:
>> call Leds.yellowOff();
>> break;
>> case RADIO_QUIETER:
>> call Pot.increase();
>> break;
>> case RADIO_LOUDER:
>> call Pot.decrease();
>> break;
>> case TOG_SOUNDER:
>> if (sound)
>> call Sounder.start();
>> else
>> call Sounder.stop();
>> sound=!sound;
>> break;
>> }
>>
>> pending =0;
>> signal ProcessCmd.done(msg, SUCCESS);
>> }
>>
>> /**
>> * Initialization for the application:
>> * 1. Initialize module static variables
>> * 2. Initialize communication layer
>> * @return Returns <code>SUCCESS</code> or <code>FAILED</code>
>> **/
>>
>> command result_t StdControl.init() {
>> msg = &buf;
>> pending = 0;
>> return rcombine(call CommControl.init(), call Leds.init());
>> call Sounder.init();
>> }
>>
>>/** start communication layer **/
>> command result_t StdControl.start(){
>> return (call CommControl.start());
>> }
>>/** stop communication layer **/
>> command result_t StdControl.stop(){
>> return (call CommControl.stop());
>> }
>>
>>/**
>> * Posts the cmdInterpret() task to handle the recieved command.
>> * @return Always returns <code>SUCCESS</code>
>>**/
>> command result_t ProcessCmd.execute(TOS_MsgPtr pmsg) {
>> pending =1;
>> msg = pmsg;
>> post cmdInterpret();
>> return SUCCESS;
>> }
>>
>> /**
>> * Called upon message reception and invokes the ProcessCmd.execute()
>> * command.
>> * @return Returns a pointer to a TOS_Msg buffer
>> **/
>> event TOS_MsgPtr ReceiveCmdMsg.receive(TOS_MsgPtr pmsg){
>> TOS_MsgPtr ret = msg;
>> result_t retval;
>> //call Leds.greenToggle();
>> retval = call ProcessCmd.execute(pmsg) ;
>> if (retval==SUCCESS) {
>> return ret;
>> } else {
>> return pmsg;
>> }
>> }
>>
>>
>> /**
>> * Called upon completion of command execution.
>> * @return Always returns <code>SUCCESS</code>
>> **/
>> default event result_t ProcessCmd.done(TOS_MsgPtr pmsg, result_t status)
>>{
>> return status;
>> }
>>
>>} // end of implementation
>>
>>
>>------------------------------------------------------------------------
>>
>>_______________________________________________
>>Tinyos-help mailing list
>>Tinyos-help at Millennium.Berkeley.EDU
>>https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
_________________________________________________________________
Play Q6 for your chance to WIN great prizes.
http://q6trivia.imagine-live.com/enca/landing
More information about the Tinyos-help
mailing list