Message Sequence Charts

A Message Sequence Chart (MSC) is a representation method for an use case. It shows the time sequential order of events and transactions between several entities. The example below consists of the entities e1 and e2. At first the entity e2 is in the state [S]. The entity e1 gets an external event foo(), which e.g. can be function call. As reaction of this function call entity e1 sends the event bar() to entity e2. The timer t1 is started as reaction to the event bar() at entity e2. The timer expires 10ms later and this timer event causes the entity e2 to send an event BAR_END to entity e1. The entity e1 now generates a return event.

inline_mscgraph_1

More information about MSCs can be found in the References section.

The MSCs used in this manual consist of two entities, the first entity MCU refers to the programm, running on the microcontroller and the entity AT86RF231 refers to the radio transceiver. At the end of each MSC there are C-Code fragments, which show the sequence of the function calls for the current use case. These code fragments just show a time sequential order of function calls but they do not describe a valid driver implementation for the radio transceiver.

The following diagrams explain the MSC primitives, which are used in this manual:

MSC_TRX_ACCESS

This sequence shows the primitives, which are used to access the radio transceiver from the MCU via the control interface. The following actions can be performed:

inline_mscgraph_2
Code example
    /* MCU::[pin] && AT86RF231::... */
    trx_pinset_reset(0);
    trx_pinset_slptr(0);
    /* MCU::[reg] */
    irqstat = trx_reg_read(RG_IRQ_STATUS);
    trx_reg_write(RG_IRQ_MASK, mask);
    /* MCU::[sreg] */
    val = trx_bit_read(SR_TRX_STATUS);
    trx_bit_write(SR_TRX_CMD, CMD_FORCE_TRX_OFF);
    /* MCU::[frm] */
    rxframe = trx_frame_read();
    trx_frame_write(len(txframe), txframe);
    /* MCU::[sram] */
    trx_sram_read(len, addr, var);
    trx_sram_write(array_var);
    /* MCU::[aes] */
    trx_aes_write(aesctrl, 1, idata1);
    trx_aes_wrrd(aesctrl, 1, idata2, odata);
    trx_aes_read(aesctrl, odataN);

MSC_TRX_IRQ_TMR_ASSERT

This sequence shows the primitives, which are used to describe the interrupt and timer handling as well as assertions, which are used for the verification of parameters.

Note:
All timer descriptions are listed in Radio Constants. However, the values of those can only be found in the AT86RF231 datasheet.
inline_mscgraph_3
Code example
    /* AT86RF231::... && MCU::[tmr] */
    delay(t7);
    /* MCU::[waitirq] */
    delay(tTR6);
    /* MCU::[tmrorirq] */
    delay(tFrame);
    /* MCU::[tmraccess] */
    ed = trx_reg_read(RG_PHY_ED_LEVEL);
    /* MCU::[async] */
    /* TRX_IRQ_RX_START occurs here */
    /* MCU::[assert] */
    state = trx_bit_read(SR_TRX_STATUS);
    ASSERT(state==TRX_OFF);

Generated on Mon Jan 12 18:32:15 2009 for SWPM AT86RF231 by  doxygen 1.5.2