Introduction
Device types
RF Devices and Networks
Migration Notes from DPA 3.0x to DPA 4.xx
Interfaces
SPI
UART
Peripherals vs. Interfaces
DPA Plug-in filename
Message parameters
DPA Messages
DPA Request
DPA Confirmation
DPA Response
Examples
Device exploration
Peripheral enumeration
Get peripheral information
Get information for more peripherals
Memory peripherals
Peripherals
Standard operations in general
Writing to peripheral
Reading from peripheral
Coordinator
Peripheral information
Get addressing information
Get discovered Nodes
Get bonded Nodes
Clear all bonds
Bond Node
Remove bonded Node
Discovery
Set DPA Param
Set Hops
Backup
Restore
Authorize bond
Smart Connect
Set MID
Node
Peripheral information
Read
Remove bond
Backup
Restore
Validate bonds
OS
Peripheral information
Read
Reset
Restart
Read TR Configuration
Write TR Configuration
Write TR Configuration byte
Run RFPGM
Sleep
Set Security
Batch
Selective Batch
LoadCode
Test RF Signal
Factory Settings
Indicate
EEPROM
Peripheral information
Read
Write
EEEPROM
Peripheral information
Extended Read
Extended Write
RAM
Peripheral information
Read & Write
Read Any
SPI (Slave)
LED
Peripheral information
Set
Pulse
Flashing
IO
Peripheral information
Direction
Set
Get
Thermometer
Peripheral information
Read
PWM
UART
Peripheral information
Open
Close
Write & Read
Clear & Write & Read
FRC
Peripheral information
Send
Extra result
Send Selective
Set FRC Params
Embedded FRC Commands
TR Configuration
Device Startup
RFPGM
Node
Bonded Node
Unbonded Node
Coordinator
Custom DPA Handler State
DPA Menu
Menus
DPA Menu “ReadyToBond”
DPA Menu “Online”
DPA Menu “Beaming”
DPA Menu “StandBy”
DPA Menu Content
Bond Request
Beaming
Connectivity Check
Exit Standby
State Indication
­User1 and User2
Standby
Reset
Restart
Unbond + Restart
Factory Settings + Restart
Unbond + Factory Settings + Restart
Autoexec
IO Setup
Custom DPA Handler
Handler Example
Events Flow
Coordinator
Node
General events
Events
Interrupt
Idle
Init
Notification
AfterRouting
BeforeSleep
AfterSleep
Reset
Disable Interrupts
FrcValue
FrcResponseTime
ReceiveDpaResponse
IFaceReceive
ReceiveDpaRequest
BeforeSendingDpaResponse
PeerToPeer
UserDpaValue
BondingButton
Indicate
VerifyLocalFrc
MenuActivated
MenuItemSelected
MenuItemFinalize
InStandby
DPA Request
DPA API
DpaApiRfTxDpaPacket
DpaApiReadConfigByte
DpaApiSendToIFaceMaster
DpaApiRfTxDpaPacketCoordinator
DpaApiLocalRequest
DpaApiReturnPeripheralError
DpaApiSetRfDefaults
DpaApiLocalFrc
DpaApiCrc8
DpaApiAggregateFrc
DpaApiSleep
DpaApiAfterSleep
DpaApiI2Cinit
DpaApiI2Cstart
DpaApiI2Cwrite
DpaApiI2Cread
DpaApiI2Cstop
DpaApiI2CwaitForACK
DpaApiI2Cshutdown
DpaApiI2CwaitForIdle
DpaApiRandom
DpaApiMenu
DpaApiMenuIndicateResult
DpaApiMenuExecute
DPA API Variables
bit IFaceMasterNotConnected
bit NodeWasBonded
bit EnableIFaceNotificationOnRead
uns16 DpaTicks
uns8 LPtoutRF
uns8 ResetType
bit DSMactivated
uns8 UserDpaValue
uns8 NetDepth
bit LpRxPinTerminate
uns8 RxFilter
uns16 BondingSleepCountdown
uns16 Random
bit AsyncReqAtCoordinator
bit NonroutedRfTxDpaPacket
uns8 DpaValue
uns8 I2Ctimeout
bit I2CwasTimeout
bit FirstDpaApiSleep
Examples
Bonding
Coordinator-FRCandSleep
FRC-Minimalistic
LED-MemoryMapping
PeripheralMemoryMapping
UserPeripheral-18B20
UserPeripheral-18B20-Idle
UserPeripheral-ADC
UserPeripheral-HW-UART
UserPeripheral-i2c
UserPeripheral-PWM
UserPeripheral-SPImaster
Migration Notes to DPA 3.03
DPA Peer-to-Peer
DP2P Response Handshake
DP2P Invite
DP2P Confirm
DP2P Response
DPA in Practice
Network Deployment
Over The Air (OTA) upgrade of IQRF OS and DPA
Code Upload
Storing Code at External EEPROM
Executing Code Upload
Executing IQRF OS Change
Constants
Peripheral Numbers
Response Codes
DPA Commands
Peripheral Types
Custom DPA Handler Events
Extended Peripheral Characteristic
HW Profile IDs
Baud rates
User FRC Codes
Appendix
CRC Calculation
CC5X Compiler
C#
Java
Pascal/Delphi
One’s Complement Fletcher-16 Checksum Calculation
CC5X Compiler
C#
Python
Custom DPA Handler Code at .hex File
IQRF OS Change
IQRF OS Change File
Code Optimization
W as a temporary variable
Variable access reorder
Variable access decomposition
Explicit MOVLB omitting
Direct function parameter usage
Avoiding else
Switch instead of if
Function call before return
Using goto to avoid redundant code
Avoiding readFromRAM and getINDFx
Advanced C-compiler optimized instructions
do {} while () is preferred
Use DECFSZ/INCFSZ
Widening function parameter
Carry as a variable
Limiting variable scope
Using IQRF variables
Parameter mapped to W
Pointer parameters mapped to FSRx
FSRx as a 16-bit variable
Using FSRx to copy between buffers and variables
Accessing 16-bit MCU registers
Using IQRF OS offset and limit variables
Effective is not always efficient
The assignment also has a value
Interval detection optimization
Optimized constants
Equality result
One instruction at the if branch
Utilization of the preloaded W
== 1 is more efficient than != 1
== 0xFF is more efficient than != 0xFF
Expression modification
Computed goto with a table limit
Default is first at switch
Better to return from than after the loop
Modification instead of storing the value
Assignment compares to 0
End condition of the 16-bit loop variable
Shift for a smart comparison
Optimized return TRUE/FALSE
Avoiding MOVLP #1
Avoiding MOVLP #2
Setting zeroed variables
Compare to zero is more efficient
setFSR01
Pointer arithmetic
Circular buffer index increment
DPA Release Notes
DPA 4.30
DPA 4.18
DPA 4.17
DPA 4.16
DPA 4.15
DPA 4.14
DPA 4.13
DPA 4.12
DPA 4.11
DPA 4.10
DPA 4.03
DPA 4.02
DPA 4.01
DPA 4.00
DPA 3.04
DPA 3.03
DPA 3.02
DPA 3.01
DPA 3.00
DPA 2.28
DPA 2.27
DPA 2.26
DPA 2.24
DPA 2.23
DPA 2.22
DPA 2.21
DPA 2.20
DPA 2.13
DPA 2.12
DPA 2.11
DPA 2.10
DPA 2.01
DPA 2.00
Document Revisions
Acknowledgement
Sales and Service