[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.
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:
[pin] : Setting levels of control pins.[reg] : Read and write registers.[sreg] : Read and write sub registers.[frm] : Read and write frames.[sram] : Read and write the SRAM.[aes] : Read and write the AES block.
/* 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);
[tmr] : A defined time, which needs to be waited until the result of a transaction or event is available. Those timer values can be defined as either numeric values or as predefined constants. The latter can be found in Radio Constants.[waitirq] : An IRQ, that has to occur within a determined time.[tmrorirq] : Wait until the timer expires or until the specified interrupt occurs[tmraccess]: A defined action, e.g. a register access, has to be executed within a determined time.[async] : An interrupt that occurs asynchronously, like in the frame receive event.[assert] : A parameter which is checked against a register value from the radio transceiver.
/* 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);
1.5.2