Hi,
  I thought I did, but well, here it is again.

I am trying it with a tag 3M Hi Strength (ISO 15693), which with my other PCMCIA reader I receive 0xE0070000121F24CC, but instead, with Listen, I get:

FF FF 51 17 10 01 0A 00 00 C2 02 32 34 30 30 30 30 30 30 30 30
FF FF 51 17 10 01 0A 00 00 0E 03 32 34 30 30 30 30 30 30 30 30
FF FF 51 17 10 01 0A 00 00 D5 02 32 34 30 30 30 30 30 30 30 30
FF FF 51 17 10 01 0A 00 00 D1 02 32 34 30 30 30 30 30 30 30 30
FF FF 51 17 10 01 0A 00 00 1E 03 32 34 30 30 30 30 30 30 30 30

Can you give me any hints on this 'conversion'? I tried to interpret the bit pattern and I only got to what is in the pdf. Thanks for your help!

Pablo

Shweta Jain wrote:
Hello Pablo,

Did you send be a PDf attachment? I didnt receive it so not sure what your
analysis is. The output from Listen is raw bytes and you need to convert
them to appropriate integers of character values before you can work with
it. The message interface file does that conversion for you making it easy
to understand the output.

Shweta

On Thu, 2 Feb 2006, Pablo Guerrero wrote:

Hello Shweta,
   thanks for the hints. I am currently inspecting the code you sent, I
appreciate it. In the meantime I sent you a pdf with my analysis of what
I was receiving with the Listen tool. Because still that is what I
receive, right?

To make my scenario clearer:

First Mote:
Mica2 with Skyetek M1Mini RFID reader attached (through a basic sensor
board MTS101CA). Running 'TestSkyeReadMini2_Poll'.
Should read tags' info and put it in the radio.

Second Mote:
Mica2 attached to the programming board, running 'TOSBase'.
Should forward what receives through UART and put it in the radio and
viceversa.

PC:
Running the java 'SerialForwarder' and 'Listen' programs.

What software are you using in the first mote?

I also have an xRFID but could not use it since some libs are missing :(

Thanks

Pablo



Shweta Jain wrote:
It is quite difficult to interpret the bit pattern via Listen. The best
way to read the data sent by the motes is through a message
interface file. Like the one I generated. (Payload.java attached).
You can generate this file by running make -f jmakefile (jmakefile
attached). Finally call the functions from your class file like
in RFID.java that I wrote. You will get an error when compiling RFID.java
because I hae modified the MoteIf constructor. You can look into
MoteIf.java for a list of constructors that can be used.


Shweta

On Wed, 1 Feb 2006, Pablo Guerrero wrote:

Hi Shweta,
   I am using the Skyetek's M1 mini. Or actually, trying to. It has been
really difficult for me to get it "working". Unfortunately I cannot
answer your question since I think it exceeds my knowledge about it. But
actually I thought I was one of the fewer guys who were using it.

   I was wondering if we could stay in touch and perhaps help each
other. May I ask you which software are you using with it? We bought our
skyetek M1 mini from crossbow, and their tech support provided me with
both the:

\opt\tinyos-1.x\contrib\xbow\apps\SkyeReadMini2_MICA2\TestSkyeReadMini2, and
\opt\tinyos-1.x\contrib\xbow\apps\SkyeReadMini2_MICA2\TestSkyeReadMini2_Poll

I am using the 'poll' version since our reader doesn't have buttons.
That means it keeps polling the whole time.

I can get the whole stuff working, by having a TOSBase mote attached to
a programming board and running the java app net.tinyos.tools.Listen,
however the bit pattern I get is quite weird... I don't really
understand it. Do you have any idea on how to interpret this bit
pattern? Or do you use some other application to do this?

Looking forward to help and contribute, regards,


Pablo Guerrero

Shweta Jain wrote:
Hi all,

I was wondering if anyone would know the  voltage to db conversion formula
for the RSSI value read from skyetek's M1 mini.


Shweta
_______________________________________________
Tinyos-help mailing list
Tinyos-help@Millennium.Berkeley.EDU
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

------------------------------------------------------------------------

/**
 * This class is automatically generated by mig. DO NOT EDIT THIS FILE.
 * This class implements a Java interface to the 'Payload'
 * message type.
 */

package net.tinyos.rfid;

public class Payload extends net.tinyos.message.Message {

    /** The default size of this message type in bytes. */
    public static final int DEFAULT_MESSAGE_SIZE = 29;

    /** The Active Message type associated with this message. */
    public static final int AM_TYPE = -1;

    /** Create a new Payload of size 29. */
    public Payload() {
        super(DEFAULT_MESSAGE_SIZE);
        amTypeSet(AM_TYPE);
    }

    /** Create a new Payload of the given data_length. */
    public Payload(int data_length) {
        super(data_length);
        amTypeSet(AM_TYPE);
    }

    /**
     * Create a new Payload with the given data_length
     * and base offset.
     */
    public Payload(int data_length, int base_offset) {
        super(data_length, base_offset);
        amTypeSet(AM_TYPE);
    }

    /**
     * Create a new Payload using the given byte array
     * as backing store.
     */
    public Payload(byte[] data) {
        super(data);
        amTypeSet(AM_TYPE);
    }

    /**
     * Create a new Payload using the given byte array
     * as backing store, with the given base offset.
     */
    public Payload(byte[] data, int base_offset) {
        super(data, base_offset);
        amTypeSet(AM_TYPE);
    }

    /**
     * Create a new Payload using the given byte array
     * as backing store, with the given base offset and data length.
     */
    public Payload(byte[] data, int base_offset, int data_length) {
        super(data, base_offset, data_length);
        amTypeSet(AM_TYPE);
    }

    /**
     * Create a new Payload embedded in the given message
     * at the given base offset.
     */
    public Payload(net.tinyos.message.Message msg, int base_offset) {
        super(msg, base_offset, DEFAULT_MESSAGE_SIZE);
        amTypeSet(AM_TYPE);
    }

    /**
     * Create a new Payload embedded in the given message
     * at the given base offset and length.
     */
    public Payload(net.tinyos.message.Message msg, int base_offset, int 
data_length) {
        super(msg, base_offset, data_length);
        amTypeSet(AM_TYPE);
    }

    /**
    /* Return a String representation of this message. Includes the
     * message type name and the non-indexed field values.
     */
    public String toString() {
      String s = "Message <Payload> \n";
      try {
        s += "  [num=0x"+Long.toHexString(get_num())+"]\n";
      } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }
      try {
        s += "  [pidx=0x"+Long.toHexString(get_pidx())+"]\n";
      } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }
      try {
        s += "  [RID=0x"+Long.toHexString(get_RID())+"]\n";
      } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }
      try {
        s += "  [SG=0x"+Long.toHexString(get_SG())+"]\n";
      } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }
      try {
        s += "  [data=";
        for (int i = 0; i < 23; i++) {
          s += "0x"+Long.toHexString(getElement_data(i) & 0xff)+" ";
        }
        s += "]\n";
      } catch (ArrayIndexOutOfBoundsException aioobe) { /* Skip field */ }
      return s;
    }

    // Message-type-specific access methods appear below.

    /////////////////////////////////////////////////////////
    // Accessor methods for field: num
    //   Field type: short, unsigned
    //   Offset (bits): 0
    //   Size (bits): 8
    /////////////////////////////////////////////////////////

    /**
     * Return whether the field 'num' is signed (false).
     */
    public static boolean isSigned_num() {
        return false;
    }

    /**
     * Return whether the field 'num' is an array (false).
     */
    public static boolean isArray_num() {
        return false;
    }

    /**
     * Return the offset (in bytes) of the field 'num'
     */
    public static int offset_num() {
        return (0 / 8);
    }

    /**
     * Return the offset (in bits) of the field 'num'
     */
    public static int offsetBits_num() {
        return 0;
    }

    /**
     * Return the value (as a short) of the field 'num'
     */
    public short get_num() {
        return (short)getUIntElement(offsetBits_num(), 8);
    }

    /**
     * Set the value of the field 'num'
     */
    public void set_num(short value) {
        setUIntElement(offsetBits_num(), 8, value);
    }

    /**
     * Return the size, in bytes, of the field 'num'
     */
    public static int size_num() {
        return (8 / 8);
    }

    /**
     * Return the size, in bits, of the field 'num'
     */
    public static int sizeBits_num() {
        return 8;
    }

    /////////////////////////////////////////////////////////
    // Accessor methods for field: pidx
    //   Field type: short, unsigned
    //   Offset (bits): 8
    //   Size (bits): 8
    /////////////////////////////////////////////////////////

    /**
     * Return whether the field 'pidx' is signed (false).
     */
    public static boolean isSigned_pidx() {
        return false;
    }

    /**
     * Return whether the field 'pidx' is an array (false).
     */
    public static boolean isArray_pidx() {
        return false;
    }

    /**
     * Return the offset (in bytes) of the field 'pidx'
     */
    public static int offset_pidx() {
        return (8 / 8);
    }

    /**
     * Return the offset (in bits) of the field 'pidx'
     */
    public static int offsetBits_pidx() {
        return 8;
    }

    /**
     * Return the value (as a short) of the field 'pidx'
     */
    public short get_pidx() {
        return (short)getUIntElement(offsetBits_pidx(), 8);
    }

    /**
     * Set the value of the field 'pidx'
     */
    public void set_pidx(short value) {
        setUIntElement(offsetBits_pidx(), 8, value);
    }

    /**
     * Return the size, in bytes, of the field 'pidx'
     */
    public static int size_pidx() {
        return (8 / 8);
    }

    /**
     * Return the size, in bits, of the field 'pidx'
     */
    public static int sizeBits_pidx() {
        return 8;
    }

    /////////////////////////////////////////////////////////
    // Accessor methods for field: RID
    //   Field type: int, unsigned
    //   Offset (bits): 16
    //   Size (bits): 16
    /////////////////////////////////////////////////////////

    /**
     * Return whether the field 'RID' is signed (false).
     */
    public static boolean isSigned_RID() {
        return false;
    }

    /**
     * Return whether the field 'RID' is an array (false).
     */
    public static boolean isArray_RID() {
        return false;
    }

    /**
     * Return the offset (in bytes) of the field 'RID'
     */
    public static int offset_RID() {
        return (16 / 8);
    }

    /**
     * Return the offset (in bits) of the field 'RID'
     */
    public static int offsetBits_RID() {
        return 16;
    }

    /**
     * Return the value (as a int) of the field 'RID'
     */
    public int get_RID() {
        return (int)getUIntElement(offsetBits_RID(), 16);
    }

    /**
     * Set the value of the field 'RID'
     */
    public void set_RID(int value) {
        setUIntElement(offsetBits_RID(), 16, value);
    }

    /**
     * Return the size, in bytes, of the field 'RID'
     */
    public static int size_RID() {
        return (16 / 8);
    }

    /**
     * Return the size, in bits, of the field 'RID'
     */
    public static int sizeBits_RID() {
        return 16;
    }

    /////////////////////////////////////////////////////////
    // Accessor methods for field: SG
    //   Field type: int, unsigned
    //   Offset (bits): 32
    //   Size (bits): 16
    /////////////////////////////////////////////////////////

    /**
     * Return whether the field 'SG' is signed (false).
     */
    public static boolean isSigned_SG() {
        return false;
    }

    /**
     * Return whether the field 'SG' is an array (false).
     */
    public static boolean isArray_SG() {
        return false;
    }

    /**
     * Return the offset (in bytes) of the field 'SG'
     */
    public static int offset_SG() {
        return (32 / 8);
    }

    /**
     * Return the offset (in bits) of the field 'SG'
     */
    public static int offsetBits_SG() {
        return 32;
    }

    /**
     * Return the value (as a int) of the field 'SG'
     */
    public int get_SG() {
        return (int)getUIntElement(offsetBits_SG(), 16);
    }

    /**
     * Set the value of the field 'SG'
     */
    public void set_SG(int value) {
        setUIntElement(offsetBits_SG(), 16, value);
    }

    /**
     * Return the size, in bytes, of the field 'SG'
     */
    public static int size_SG() {
        return (16 / 8);
    }

    /**
     * Return the size, in bits, of the field 'SG'
     */
    public static int sizeBits_SG() {
        return 16;
    }

    /////////////////////////////////////////////////////////
    // Accessor methods for field: data
    //   Field type: short[], unsigned
    //   Offset (bits): 48
    //   Size of each element (bits): 8
    /////////////////////////////////////////////////////////

    /**
     * Return whether the field 'data' is signed (false).
     */
    public static boolean isSigned_data() {
        return false;
    }

    /**
     * Return whether the field 'data' is an array (true).
     */
    public static boolean isArray_data() {
        return true;
    }

    /**
     * Return the offset (in bytes) of the field 'data'
     */
    public static int offset_data(int index1) {
        int offset = 48;
        if (index1 < 0 || index1 >= 23) throw new 
ArrayIndexOutOfBoundsException();
        offset += 0 + index1 * 8;
        return (offset / 8);
    }

    /**
     * Return the offset (in bits) of the field 'data'
     */
    public static int offsetBits_data(int index1) {
        int offset = 48;
        if (index1 < 0 || index1 >= 23) throw new 
ArrayIndexOutOfBoundsException();
        offset += 0 + index1 * 8;
        return offset;
    }

    /**
     * Return the entire array 'data' as a short[]
     */
    public short[] get_data() {
        short[] tmp = new short[23];
        for (int index0 = 0; index0 < numElements_data(0); index0++) {
            tmp[index0] = getElement_data(index0);
        }
        return tmp;
    }

    /**
     * Set the contents of the array 'data' from the given short[]
     */
    public void set_data(short[] value) {
        for (int index0 = 0; index0 < value.length; index0++) {
            setElement_data(index0, value[index0]);
        }
    }

    /**
     * Return an element (as a short) of the array 'data'
     */
    public short getElement_data(int index1) {
        return (short)getUIntElement(offsetBits_data(index1), 8);
    }

    /**
     * Set an element of the array 'data'
     */
    public void setElement_data(int index1, short value) {
        setUIntElement(offsetBits_data(index1), 8, value);
    }

    /**
     * Return the total size, in bytes, of the array 'data'
     */
    public static int totalSize_data() {
        return (184 / 8);
    }

    /**
     * Return the total size, in bits, of the array 'data'
     */
    public static int totalSizeBits_data() {
        return 184;
    }

    /**
     * Return the size, in bytes, of each element of the array 'data'
     */
    public static int elementSize_data() {
        return (8 / 8);
    }

    /**
     * Return the size, in bits, of each element of the array 'data'
     */
    public static int elementSizeBits_data() {
        return 8;
    }

    /**
     * Return the number of dimensions in the array 'data'
     */
    public static int numDimensions_data() {
        return 1;
    }

    /**
     * Return the number of elements in the array 'data'
     */
    public static int numElements_data() {
        return 23;
    }

    /**
     * Return the number of elements in the array 'data'
     * for the given dimension.
     */
    public static int numElements_data(int dimension) {
      int array_dims[] = { 23,  };
        if (dimension < 0 || dimension >= 1) throw new 
ArrayIndexOutOfBoundsException();
        if (array_dims[dimension] == 0) throw new IllegalArgumentException("Array dimension 
"+dimension+" has unknown size");
        return array_dims[dimension];
    }

    /**
     * Fill in the array 'data' with a String
     */
    public void setString_data(String s) {
         int len = s.length();
         int i;
         for (i = 0; i < len; i++) {
             setElement_data(i, (short)s.charAt(i));
         }
         setElement_data(i, (short)0); //null terminate
    }

    /**
     * Read the array 'data' as a String
     */
    public String getString_data() {
         char carr[] = new 
char[Math.min(net.tinyos.message.Message.MAX_CONVERTED_STRING_LENGTH,23)];
         int i;
         for (i = 0; i < carr.length; i++) {
             if ((char)getElement_data(i) == (char)0) break;
             carr[i] = (char)getElement_data(i);
         }
         return new String(carr,0,i);
    }

}

Attachment: Graphic1.pdf
Description: Adobe PDF document

_______________________________________________
Tinyos-help mailing list
Tinyos-help@Millennium.Berkeley.EDU
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to