[Tinyos-2-commits] CVS: tinyos-2.x/apps/tosthreads/apps/TestBlockStorage Makefile, NONE, 1.1 README, NONE, 1.1 TestBlockStorageAppC.nc, NONE, 1.1 TestBlockStorageP.nc, NONE, 1.1 volumes-at45db.xml, NONE, 1.1 volumes-stm25p.xml, NONE, 1.1

Kevin Klues klueska at users.sourceforge.net
Thu Jun 12 08:11:41 PDT 2008


Update of /cvsroot/tinyos/tinyos-2.x/apps/tosthreads/apps/TestBlockStorage
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv2426/tosthreads/apps/TestBlockStorage

Added Files:
	Makefile README TestBlockStorageAppC.nc TestBlockStorageP.nc 
	volumes-at45db.xml volumes-stm25p.xml 
Log Message:
initial checkin of tosthreads related apps

--- NEW FILE: Makefile ---
COMPONENT=TestBlockStorageAppC

include $(MAKERULES)

--- NEW FILE: README ---
This program erases volume, then randomly write (then verified by read).
Led0 is ON during the test, and Led1 is ON if all tests pass. If there is a problem, all three LEDs will be ON.

--- NEW FILE: TestBlockStorageAppC.nc ---
/*
 * Copyright (c) 2008 Johns Hopkins University.
 * 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 (updated) modification history and the author appear in
 * all copies of this source code.
 *
 * 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 COPYRIGHT HOLDERS OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA,
 * OR PROFITS) 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.
*/

/**
 * @author Chieh-Jan Mike Liang <cliang4 at cs.jhu.edu>
 */

#include "StorageVolumes.h"

configuration TestBlockStorageAppC {}

implementation
{
  components MainC,
             TestBlockStorageP,
             LedsC,
             new ThreadC(500) as TinyThread1,
             new BlockingBlockStorageC(VOLUME_TESTBLOCKSTORAGE1) as BlockingBlockStorage1,
             RandomC;
             
  TestBlockStorageP.Boot -> MainC;
  TestBlockStorageP.Leds -> LedsC;
  TestBlockStorageP.BlockingBlock1 -> BlockingBlockStorage1;
  TestBlockStorageP.TinyThread1 -> TinyThread1;
  TestBlockStorageP.Random -> RandomC;
}

--- NEW FILE: TestBlockStorageP.nc ---
/*
 * Copyright (c) 2008 Johns Hopkins University.
 * 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 (updated) modification history and the author appear in
 * all copies of this source code.
 *
 * 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 COPYRIGHT HOLDERS OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA,
 * OR PROFITS) 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.
*/

/**
 * @author Chieh-Jan Mike Liang <cliang4 at cs.jhu.edu>
 */

#include "Storage.h"

module TestBlockStorageP
{
  uses {
    interface Boot;
    interface Leds;
    interface Thread as TinyThread1;
    interface BlockingBlock as BlockingBlock1;
    interface Random;
  }
}

implementation
{
  event void Boot.booted() {
    call TinyThread1.start(NULL);
  }
  
  event void TinyThread1.run(void* arg)
  {
    int i;
    error_t error;

    call Leds.set(1);

    if (call BlockingBlock1.getSize() != 1048576) {
      call Leds.set(7);
      return;
    }
    
    error = call BlockingBlock1.erase();
    if (error != SUCCESS) {
      call Leds.set(7);
      return;
    }
    
    for (i = 0; i < 20; i++) {
      storage_addr_t writeAddr = call Random.rand32() % (call BlockingBlock1.getSize() - sizeof(storage_addr_t));
      storage_len_t len = sizeof(storage_addr_t);
      storage_addr_t readBuf;
    
      error = call BlockingBlock1.write(writeAddr, &writeAddr, &len);
      if (error == SUCCESS) {
        len = sizeof(storage_addr_t);
        call BlockingBlock1.read(writeAddr, &readBuf, &len);
        if (readBuf != writeAddr) {
          call Leds.set(7);
          return;
        }
      } else {
        call Leds.set(7);
        return;
      }
    }
    
    call Leds.set(2);
  }
}

--- NEW FILE: volumes-at45db.xml ---
<volume_table>
  <volume name="TESTBLOCKSTORAGE1" size="262144" type="block"/>
</volume_table>

--- NEW FILE: volumes-stm25p.xml ---
<volume_table>
  <volume name="TESTBLOCKSTORAGE1" size="1048576" type="block"/>
</volume_table>



More information about the Tinyos-2-commits mailing list