[Tinyos-contrib-commits] CVS: tinyos-1.x/contrib/diku/mcs51/apps/SerialTest2 HPLUART.nc, NONE, 1.1 Makefile, NONE, 1.1 SerialTest2.nc, NONE, 1.1 SerialTest2M.nc, NONE, 1.1 helpfunctions.h, NONE, 1.1

Martin Leopold mleopold at users.sourceforge.net
Fri Apr 7 05:49:58 PDT 2006


Update of /cvsroot/tinyos/tinyos-1.x/contrib/diku/mcs51/apps/SerialTest2
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20038/apps/SerialTest2

Added Files:
	HPLUART.nc Makefile SerialTest2.nc SerialTest2M.nc 
	helpfunctions.h 
Log Message:
A first go at an mcs51 port

--- NEW FILE: HPLUART.nc ---
// $Id: HPLUART.nc,v 1.1 2006/04/07 12:49:54 mleopold 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.
 */
/*
 * Authors:		Jason Hill, David Gay, Philip Levis
 * Date last modified:  6/25/02
 *
 *
 */

/**
 * The byte-level interface to the UART, which can send and receive
 * simultaneously.
 *
 * <p> This interface, as it directly abstracts hardware, follows the
 * hardware interface convention of not maintaining state. Therefore,
 * some conditions that could be understood by a higher layer to be
 * errors execute properly; for example, one can call
 * <code>txBit</code> when in receive mode. A higher level interface
 * must provide the checks for conditions such as this.
 *
 * @author Jason Hill
 * @author David Gay
 * @author Philip Levis
 */

interface HPLUART {

  /**
   * Initialize the UART.
   *
   * @return SUCCESS always.
   */
  
  async command result_t init();

  /**
   * Turn off the UART
   *
   * @return SUCCESS always
   */

  async command result_t stop();

  async command result_t setRate(int rate);

  /**
   * Send one byte of data. There should only one outstanding send at
   * any time; one must wait for the <code>putDone</code> event before
   * calling <code>put</code> or <code>put2</code> again.
   *
   * @return SUCCESS always.
   */
  async command result_t put(uint8_t data);

  /**
   * Send more than one byte of data. ...
   */

  async command result_t put2(uint8_t *start, uint8_t *end);

  /**
   * A byte of data has been received.
   *
   * @return SUCCESS always.
   */
  
  async event result_t get(uint8_t data);

  /**
   * The previous call to <code>put</code> has completed; another byte
   * may now be sent.
   *
   * @return SUCCESS always.
   */
  async event result_t putDone();
}

--- NEW FILE: Makefile ---
COMPONENT=SerialTest2
PFLAGS=-I%T/lib/Counters 

ifdef IM_SENDER
 PFLAGS += "-DIM_SENDER"
endif

include ../Makerules

--- NEW FILE: SerialTest2.nc ---
/* 
*/

configuration SerialTest2 {
}
implementation {
  components Main, SerialTest2M, HPLUARTC;
  Main.StdControl -> SerialTest2M;
  SerialTest2M.UART -> HPLUARTC;
}

--- NEW FILE: SerialTest2M.nc ---
/*
  Testing the serial connection
*/

module SerialTest2M {
  provides {
     interface StdControl;
  }
  uses {
     interface HPLUART as UART;
  }
}
implementation {
  uint8_t mystring[37] = "\n\rBoard h4xOr3d by purps og egeskov\n\r";

  /*
     Helper functions 
  */
  int strlen(char s[]) {
    int i;
    i = 0;
    while (s[i] != '\0')
      ++i;
    return i;
  }

  
  /*
     Interface implementation
  */
  command result_t StdControl.init() {
    call UART.init();
    call UART.put2(&mystring[0], &mystring[strlen(mystring)]);
    return SUCCESS;
  }

  command result_t StdControl.start() {
    return SUCCESS;
  }

  command result_t StdControl.stop() {
    return SUCCESS;
  }
  
  
  async event result_t UART.get(uint8_t data) {
    return SUCCESS;
  }

  async event result_t UART.putDone() {
    return SUCCESS;
  }
}

--- NEW FILE: helpfunctions.h ---

  /***********************************************************************
   ** Helper functions
  ***********************************************************************/
  int strlen(char s[])
  {
    int i;
    i = 0;
    while (s[i] != '\0')
      ++i;
    return i;
  }

  void reverse(char s[])
  {
    int c,i,j;

    for(i=0,j = strlen(s) - 1;i<j;i++,j--)
    {
      c = s[i];
      s[i] = s[j];
      s[j] = c;
    }
  }

  void itoa (int n, char s[])
  {
    int i, sign;

    if ((sign = n) < 0 )
      n = -n;
    i = 0;
    do {
      s[i++] = n % 10 + '0';
    } while ((n /= 10) > 0);
    if (sign < 0)
      s[i++] = '-';
    s[i] = '\0';
    reverse(s);
  }

  void strcpy(char *s, char *t) {
    while(((*s++) = (*t++)));
  }

  void strcat (char s[], char t[]) {
    int i, j;
    i = j = 0;

    while (s[i] != '\0')
      i++;
    while ((s[i++] = t[j++]) != '\0');
  }



More information about the Tinyos-contrib-commits mailing list