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
_______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
