Yes, I'm looking at the code with the manual, but still cannot figure out
the questions above. Please help.

On Fri, Sep 24, 2010 at 6:50 PM, Eric Decker <[email protected]> wrote:

> Have you grabed the cc2420 user's manual.  I haven't looked at it in quite
> some time but if
> memory serves (yeah right) then it does a pretty good job of explaning what
> the different
> h/w pins do.
>
> On Fri, Sep 24, 2010 at 1:50 PM, Xiaohui Liu <[email protected]> wrote:
>
>> Hi,
>>
>> I have a few questions regarding CC2420TransmitP component:
>>
>> 0) What does the length field in CC2420 header mean? payload length only?
>>
>> 1)
>>   async event void CC2420Receive.receive( uint8_t type, message_t* ack_msg
>> ) {
>>     cc2420_header_t* ack_header;
>>     cc2420_header_t* msg_header;
>>     cc2420_metadata_t* msg_metadata;
>>     uint8_t* ack_buf;
>>     uint8_t length;
>>
>>     if ( type == IEEE154_TYPE_ACK && m_msg) {
>>       ack_header = call CC2420PacketBody.getHeader( ack_msg );
>>       msg_header = call CC2420PacketBody.getHeader( m_msg );
>>
>>       if ( m_state == S_ACK_WAIT && msg_header->dsn == ack_header->dsn ) {
>>         call BackoffTimer.stop();
>>
>>         msg_metadata = call CC2420PacketBody.getMetadata( m_msg );
>>         ack_buf = (uint8_t *) ack_header;
>>         length = ack_header->length;
>>
>>         msg_metadata->ack = TRUE;
>>         //XL: why RSSI and LQI computed this way, using ACK packet
>> header?????????????
>>         msg_metadata->rssi = ack_buf[ length - 1 ];
>>         msg_metadata->lqi = ack_buf[ length ] & 0x7f;
>>         signalDone(SUCCESS);
>>       }
>>     }
>>   }
>>
>> 2)
>>   void attemptSend() {
>>     uint8_t status;
>>     bool congestion = TRUE;
>>
>>     atomic {
>>       if (m_state == S_CANCEL) {
>>         call SFLUSHTX.strobe();
>>         releaseSpiResource();
>>         call CSN.set();
>>         m_state = S_STARTED;
>>         signal Send.sendDone( m_msg, ECANCEL );
>>         return;
>>       }
>>
>>       call CSN.clr();
>>       status = m_cca ? call STXONCCA.strobe() : call STXON.strobe();
>>       if ( !( status & CC2420_STATUS_TX_ACTIVE ) ) {
>>         //XL: isn’t the status already returned by previous strobe(), why
>> read again????????
>>         status = call SNOP.strobe();
>>         if ( status & CC2420_STATUS_TX_ACTIVE ) {
>>           congestion = FALSE;
>>         }
>>       }
>>       m_state = congestion ? S_SAMPLE_CCA : S_SFD;
>>       call CSN.set();
>>     }
>>
>>     if ( congestion ) {
>>       totalCcaChecks = 0;
>>       releaseSpiResource();
>>       congestionBackoff();
>>     } else {
>>       call BackoffTimer.start(CC2420_ABORT_PERIOD);
>>     }
>>   }
>>
>>
>> Can you please help me understand? I really appreciate.
>>
>> --
>> -Xiaohui Liu
>>
>> _______________________________________________
>> Tinyos-help mailing list
>> [email protected]
>> https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>>
>
>
>
> --
> Eric B. Decker
> Senior (over 50 :-) Researcher
>
>
>


-- 
-Xiaohui Liu
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to