as3993 ST25RU3993 Firmware
Functions | Variables
appl_commands_table.c File Reference
#include "as3993_config.h"
#include "as3993.h"
#include "global.h"
#include "appl_commands.h"

Go to the source code of this file.

Functions

void callWrongCommand (void)
 
void callReaderConfig (void)
 
void callTunerTable (void)
 
void callAutoTuner (void)
 
void callAntennaTuner (void)
 
void callAntennaPower (void)
 
void callConfigGen2 (void)
 
void callConfigTxRx (void)
 
void callInventory6B (void)
 
void callReadFromTag6B (void)
 
void callWriteToTag6B (void)
 
void callInventoryGen2 (void)
 
void callSelectTag (void)
 
void callWriteToTag (void)
 
void callChangeFreq (void)
 
void callReadFromTag (void)
 
void callLockUnlockTag (void)
 
void callKillTag (void)
 
void callStartStop (void)
 
void callGenericCommand (void)
 
void callConfigPA (void)
 
void callInventoryParams (void)
 

Variables

struct callFunction call_fkt_ [CALL_FKT_SIZE]
 

Detailed Description

Table to branch into the functions associated with a specific command.

This file provides a table (call_fkt_()) which allows to branch into functions depending on which command has been received. Each command has an 8bit identifier. This identifier is also used as offset in the table, to branch into the corresponding function. The 8bit identifier is rx-ed from the host (command ID) as described in Protocol description.

Author
Ulrich Herrmann
Bernhard Breinbauer

Definition in file appl_commands_table.c.

Function Documentation

void callAntennaPower ( void  )

This function enables/disables the RF field and is executed when a stream packet with protocol = CMD_ANTENNA_POWER is received.
The payload of the stream packet looks like this:

Byte0 1
Content0x00 for off
0xFF for on
eval_mode

eval_mode: reserved, should be zero
The device sends back:

Byte0
Content0

Status of the reply packet indicates success or error.

Definition at line 402 of file appl_commands.c.

void callAntennaTuner ( void  )

This function sets and reads antenna tuner network related values and is executed when a stream packet with protocol = CMD_ANTENNA_TUNER is received. There are different kind of tuning networks available. The full network which is currently supported by the Firmware looks like this:

.--- L ---.
| |
in ----.----.----- L --.--C_len--.--.-----.-----.----- out
| | | | |
C_in L C_out L R
| | | | |
___ ___ ___ ___ ___
- - - - -
' ' ' ' '

On the Femto Reader there is a reduced tuning network: Clen is missing.
The DTCs capacity values range from:

  • C_* = 32 steps from 1.3pF to 5.5pF, step size 0.131pF, +-10%

The format of the payload from the host is: Get/Set current tuner parameters:

Byte 0 1 2 3 4 5
Content set_cin cin set_clen clen set_cout cout

The values are only being set if the proper set_X value is set to 1.
The device sends back:

Byte 0 1 2 3 4 5
Content reserved (0) cin reserved(0) clen reserved(0) cout

Reply status will be set to ERR_NONE if operation was successful. If reader does not support tuning status will be set to ERR_REQUEST.

Definition at line 501 of file appl_commands.c.

void callAutoTuner ( void  )

This function allows to trigger a auto tuning cycle. For in detail information to antenna tuning see callAntennaTuner() and tuner.h.
The function is executed when a stream packet with protocol = CMD_AUTO_TUNER is received. The format of the payload from the host is:

Byte 0
Content auto_tune

If the auto_tune value is not equal zero a auto tuner cycle will be started:


The device does not send a reply back, but the result of the auto tuning procedure can be read by callAntennaTuner().

Note
Depending on the used auto tune algorithm there will be some delay until the tune algorithm finshed and the new tuned DTC values are avaiable. The tuner algorithm 2 takes roughly 3 seconds, algorithm 1 is faster.

Definition at line 612 of file appl_commands.c.

void callChangeFreq ( void  )

This function sets/adds/measures frequency related stuff and is executed when a stream packet with protocol = CMD_CHANGE_FREQ is received.

Note
The freq parameter contains the frequency in kHz and is always 3 bytes long. The first byte in the payload is the LSB. The frequency is extracted from the payload like this:
u32 freq;
freq = 0;
freq += (u32)cmdBuffer.rxData[2];
freq += ((u32)cmdBuffer.rxData[3]) << 8;
freq += ((u32)cmdBuffer.rxData[4]) << 16;

The format of the payload received from the host is one of the following:

  • Get RSSI level

    Byte01 .. 3
    Content1 (SubCmd)freq

    The reader replies with:

    Byte0 1 2
    ContentI-channel Q-channel -

    The reader replies with ERR_REQUEST for HW with no external PA.

  • Get Reflected Power level

    Byte01 .. 34
    Content2 (SubCmd)freq Apply Tuner Setting

    to which the reader replies with:

    Byte01
    ContentI-channelQ-channel

  • Add frequency to frequency list used for hopping. If clear_list is set the list will be deleted before adding the new frequency. rssi_threshhold and profile_id are global values and not set for every frequency. Therefore the last value which they have been set to is valid.

    Byte01 .. 34 5 6
    Content4 (SubCmd)freq clear_listrssi_threshhold(dBm)profile_id

    Where rssi_threshold is used by the "listen before talk" feature: Before hopping to a new channel the reader listens on the frequency if the rssi value is smaller than this threshold.
    profile_id is used by the Reader Suite to enumerate the various frequency profiles.
    The reader replies with this:

    Byte0
    Content0x00

    Status will be set to ERR_MEM if no more frequency can be added (see MAXFREQ). If command was successful status will be ERR_NONE.

  • Get frequency list related parameters

    Byte0
    Content5 (SubCmd)

    The reader replies with:

    Byte0 1 .. 3 4 .. 6 7 8
    Contentprofile_idmin_freqmax_freqcurr_num_freqshost_num_freqs

    Where profile_id and rssi_threshold refer to the values used in SubCmd 4. Values for the other parameters are:

    Namevalues
    min_freqMinimum frequency of current frequency list.
    max_freqMaximum frequency of current frequency list.
    curr_num_freqNumber of frequencies in current frequency list.
    host_num_freqNumber of frequencies the host sent to add with SubCmd 4. Might be bigger than curr_num_freq.

  • Set frequency hopping related parameters

    Byte01 .. 2 3 .. 4 5 .. 6 7
    Content8 (SubCmd)listeningTimemaxSendingTimeidleTimerssi threshold

    The reader replies with:

    Byte0
    Content0x00

    Status of reply will be ERR_NONE.

  • Get frequency hopping related parameters

    Byte0
    Content9 (SubCmd)

    The reader replies with:

    Byte0 .. 1 2.. 3 4 .. 5
    Contentlistening_timemax_sending_timeidle_time

    Status of reply will be ERR_NONE.

  • Continuous modulation test
    Byte01 .. 34 .. 5 6 7 .. 16
    Content16 (SubCmd)freq duration in msrandomrandom_data
    causes continuous modulation of the RF field for given duration. If random is set to 0 Gen2 NAK commands are sent (On AS3980 NAK direct command is not available therefore Transmit with CRC with dummy payload is used). If random is set to 1 pseudo random data is sent. For this the random_data and timer values are used as random data to send.
    Note
    The reader does not reply any data to this command as it enters continuous modulation mode directly.

    Note
    Communication with host is not possible while continous modulation is performed. Wait at least for duration time before starting communication attempt with reader.

Definition at line 2177 of file appl_commands.c.

void callConfigGen2 ( void  )

This function sets and reads various gen2 related settings and is executed when a stream packet with protocol = CMD_CONFIG_TX_RX is received. Most of the parameters are related to the QUERY commmand of the Gen2 protocol specification.
The format of the payload from the host is:

Byte 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Content set_lf lf set_coding coding set_session session set_trext trext set_tari tari set_qbegin qbegin set_sel sel set_target target

The values are only being set if the proper set_X value is set to 1.
The device sends back:

Byte 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Content reserved(0) lf reserved(0) coding reserved(0) session reserved(0) trext reserved(0) tari reserved(0) qbegin reserved(0) sel reserved(0) target

Values for the different parameters are:

Namevalues
lf0 = 40 kHz,
3 = 80 kHz not AS3993,
6 = 160 kHz,
8 = 213 kHz,
9 = 256 kHz,
12 = 320 kHz,
15 = 640 kHz
coding0 = FM0,
1 = Miller2,
2 = Miller4,
3 = Miller8
session0 = S0,
1 = S1,
2 = S2,
3 = S3
trext0 = short preamble, no pilot tone,
1 = long preamble, pilot tone
tari0 = 6.25 us,
1 = 12.5 us,
2 = 25 us
qbegin0 .. 15. Initial gen2 round is 2^qbegin long. Please be careful with higher values.
sel0 .. 1 = All,
2 = ~SL,
3 = SL
target0 = A,
1 = B

Definition at line 1383 of file appl_commands.c.

void callConfigPA ( void  )

This function changes the PA HW configuration and is executed when a stream packet with protocol = CMD_CALL_PA_ID is received.
This function is currently only available for Newton readers. The payload of the stream packet looks like this:

Byte0 1
ContentReadWriteModeConfig Word


ReadWriteMode:
0=> Read, 1=>Write and Read
ConfigWord:
Bit 0 (LSB) : Value for G8
Bit 1 (2LSB): Value for G16
1 => High
0 => Low
The reply of this command looks like this:

Byte1
ContentConfig Word


Status of the reply packet indicates success or error.

Definition at line 3489 of file appl_commands.c.

void callConfigTxRx ( void  )

This function sets and reads various RF Tx/Rx related settings and is executed when a stream packet with protocol = CMD_CONFIG_TX_RX is received.

Note
Not every parameters is available on every board, eg: switching antenna boards is only available on boards with 2 antenna ports. The FW will silently ignore not applicable parameters.

The format of the payload from the host is:

Byte 0 1 2 3
Content set_sensitivity sensitivity set_antenna antenna id

The values are only being set if the proper set_X value is set to 1.
The device sends back:

Byte 0 1 2 3
Content reserved(0) sensitivity reserved (0) antenna id

Values for the different parameters are:

Namevalues
sensitivity-128 .. 127 (dBm)
antenna id1: antenna port 1
2: antenna port 2

Definition at line 1187 of file appl_commands.c.

void callGenericCommand ( void  )

This function executes an generic command from a previously selected gen2 tag when a stream packet with protocol = CMD_GENERIC_CMD_ID is received.
The format of the payload from the host is:

Byte0..34..5[UpperNibble]5[LowerNibble]..6789..9+TransmitByteSize
Contentpasswordlength_transmit_datalength_receive_datadirect commandno_response_timetransmit data

Parameters are:

  • password: access password; if the password is nonzero the tag will accessed first
  • length_transmit_data: bit size of the data to transmit without RN16 and CRC-16
  • length_receive_data: bit size of the data to receive without RN16 and CRC-16
  • direct command:
    • 0x90 AS3993_CMD_TRANSMCRC
    • 0x91 AS3993_CMD_TRANSMCRCEHEAD
    • 0x92 AS3993_CMD_TRANSMNOCRC
  • no_response_time: no respone interrupt wait time
  • transmit data: data to transmit to the tag

The device sends back the following report:

Byte012..2+ReceivedByteSize
Contentstatuslength_received_datareceived data

Definition at line 2683 of file appl_commands.c.

void callInventory6B ( void  )

This function performs one inventory round using ISO18000-6b protocol. The format of the payload from the host is:

Byte01..89
Contentaddressword_data mask

where

  • address: address where data will be compared
  • word_data: data which will be compared
  • mask: the mask value for GROUP_SELECT_EQ command, 0 will select all tags

The device sends back:

Byte0 1..8 9..16...
Contentnumber of tagsID of first tagID of second tag...

Definition at line 1455 of file appl_commands.c.

void callInventoryGen2 ( void  )
This function performs a single gen2 protocol inventory round according to

parameters configured by callConfigGen2() and callSelectTag().
The function is executed when a stream packet with protocol = CMD_INVENTORY_GEN2 is received.
The format of the payload from the host is:

Byte0 1 2
ContentautoAck tid(2LSB)+fast(LSB) rssi

Where autoAck defines if the autoACK mode of the reader is used. If autoAck = 0 autoACK will not be used, otherwise autoACK will be used. The parameter tid defines if a read of the TID Memory will be performed in inventory rounds. If tid = 1 the TID memory will be read, otherwise no read will be done. Parameter fast defines how the inventory rounds are performed. If fast = 0 the inventory round is executed until the tag is in the Open state. If fast = 1 the inventory round is stopped when the tag reaches Acknowledged state (no Req_RN command is sent). See Gen2 protocol specification page 47: Tag state diagram for details.
The rssi parameter defines which rssi value should be measured when getting a tag. The value of rssi parameter will be written to register 0x29.
The device sends back all the tags using the following report:

Byte 0 1 2 3 4 5 .. 7 8 9 10 11 .. 11+epclen 12+epclen 13+epclen .. 15+epclen ...
Content cyclic tags_left tags_in_reply AGC and status (reg 0x2A) RSSI_value (reg 0x2B) base_freq epclen+pclen pc[0] pc[1] epc next tag: RSSI next tag: base_freq ...
  • cyclic: is set to 1 if cyclic(continuous) inventory rounds are performed, otherwise 0.
  • tags_left: number of tags still to be sent after this reply. The next tag data will be sent in next iteration of sendTagData().
  • tags_in_reply: number of tags in reply.
  • agc and status: subc_phase, agc status, i/q channel (content of register 0x2A)
  • RSSI_value: upper 4 bits I channel, lower 4 bits Q channel (content of register 0x2B)
  • base_freq: base frequency at which the tag was found.
  • epclen+pclen: added length of pc and epc.

Sending the reply is implemented in function sendTagData(), which has to be called repeatedly until all tag data has been sent.

Definition at line 1667 of file appl_commands.c.

void callInventoryParams ( void  )

This function changes some Inventory Parameters and is executed when a stream packet with protocol = CMD_CALL_INV_PARAMS_ID is received.
The payload of the stream packet looks like this:

Byte0 1..2 3 4 5 6 7 8 9..10 11
ContentWrite Round DelayRound DelayWrite Query Adjust ParametersAdaptive QAddtional RoundsQueryAdjust Up ThresholdQueryAdjust Down ThresholdWrite Tuning ParametersTuning IntervalTuning Deviation


Write Round Delay: 0 => Read, 1 => Write and Read
Round Delay: Inventory Round Delay
Write Query Adjust Parameters: 0 => Read, 1 => Write and Read
Adaptive Q: 0 => Off, 1 => On, see function inventoryGen2
Addtional Rounds: see function gen2SearchForTags
QueryAdjust Up Threshold: see function gen2SearchForTags
QueryAdjust Down Threshold: see function gen2SearchForTags
Write Tuning Parameters: 0 => Read, 1 => Write and Read
Tuning Interval: see function hopFrequencies
Tuning Deviation: see function hopFrequencies
The reply of this command looks like this:

Byte0..1 2 3 4 5 6 7 8
ContentRound DelayAdaptive QAddtional RoundsQueryAdjust Up ThresholdQueryAdjust Down ThresholdWrite Tuning ParametersTuning IntervalTuning Deviation


Status of the reply packet indicates success or error.

Definition at line 3541 of file appl_commands.c.

void callKillTag ( void  )

This function kills a gen2 tag and is executed when a stream packet with protocol = CMD_KILL_TAG is received.
The format of the payload from the host is:

Byte0 .. 3 4
Contentkill passwordrecom

where:

  • recom: see GEN2 standard: table on "XPC_W1 LSBs and a Tag's recomissioned status"

The device sends back the following report:

Byte0
Contentstatus

Definition at line 2594 of file appl_commands.c.

void callLockUnlockTag ( void  )

This function locks\unlocks a gen2 tag and is executed when a stream packet with protocol = CMD_LOCK_UNLOCK_TAG is received.
The format of the payload from the host is:

Byte0..2 3 .. 5
Contentmask_and_actionaccess password

The device sends back the following report:

Byte0
Contenttag_code

Definition at line 2534 of file appl_commands.c.

void callReaderConfig ( void  )

This function gets/sets the current reader config and is executed when a stream packet with protocol = CMD_READER_CONFIG is received. The reader config contains the power down mode which can be changed and various non-changeable parameters like: error codes, FW compile time switches, ...
The format of the payload from the host is:

Byte 0 1
Content set_powermode powermode

The values are only being set if the proper set_X value is set to 1.
The powermode value will be applied to readerPowerDownMode variable and used in powerDownReader() and powerUpReader().
The device reply payload is:

Byte0 1 2 3 4 5 6 7 8
ContentWrongChipIdInitErrCodeVCOPAINPUTAntSwitchTunerpowerDownModeHardware ID

The values for the parameters are:

ParameterValues
WrongChipId0-99: No Error. FW and reader chip match. The value is the last to digits of the reader chip eg: for AS3993 the value is 93.
0xFF: FW is not compatible with the reader chip on this board.
Init Error0: No Error. Init of reader chip was successful.
1: Writing and reading SPI failed.
2: Reset via EN low + high failed.
3: IRQ line failed.
4: Crystal not stable (Bit0 in AGC and Internal Status register 0x2A).
5: PLL not locked (Bit1 in AGC and Internal Status register 0x2A)
VCO0: FW was compiled for internal VCO (INTVCO).
1: FW was compiled for external VCO (EXTVCO).
PA0: FW was compiled for internal PA (INTPA).
1: FW was compiled for external PA (EXTPA).
Input0: FW was compiled for balanced input (BALANCEDINP).
1: FW was compiled for single input (SINGLEINP).
AntSwitch0: FW was not compiled for 2 antenna ports.
1: FW was compiled to use 2 antenna ports (ANTENNA_SWITCH).
TunerOr'ed tuner configuration, every bit repesents a tunable cap (DTC).
0: FW does not support tuning.
0x01: Cin tuner is used (TUNER_CIN).
0x02: Clen tuner is used (TUNER_CLEN).
0x04: Cout tuner is used (TUNER_COUT).
other bits: not yet supported.
powerDownModeCurrently configured power down mode of reader.
Available modes are: POWER_DOWN, POWER_NORMAL, POWER_NORMAL_RF and POWER_STANDBY.
Hardware IDIdentification number for the board (HARDWARE_ID_NUM)
Available IDs are defined in as3993_config.h

If any of the parameters is set to 0xFF an unidentified error/configuration occured.

Definition at line 995 of file appl_commands.c.

void callReadFromTag ( void  )

This function reads from a previously selected gen2 tag and is executed when a stream packet with protocol = CMD_READ_FROM_TAG is received.
The format of the payload from the host is:

Byte01..45..8
Contentmem_bankaddresspassword

rxSize divided by two defines the number of words to be read. If rxSize is odd then word by word reading is used. If even the desired memory is read as one bulk. Parameters are:

  • mem_bank:
    • 0:reserved membank
    • 1:EPC membank
    • 2:TID membank
    • 3:USER membank
  • address: the wordPtr where to read from

The device sends back the following report:

Byte0..txSize(max)
Contentdata

If the returned error is ERR_HEADER, the txSize will be odd and the last byte will be the error code returned by the tag.

Definition at line 2433 of file appl_commands.c.

void callReadFromTag6B ( void  )

This function reads from a tag using ISO18000-6b protocol command READ. The format of the payload from the host is:

Byte0..78
ContentID address

The device sends back:

Byte0..7
Contentword_data

Definition at line 1508 of file appl_commands.c.

void callSelectTag ( void  )

This function stores or clears gen2 select command parameters. The gen2 select based on these parameters can be executed with the function performSelects.
A Gen2 tag can be singulated using the given mask for subsequent operations like inventory/read/write. Several (MAX_SELECTS) Select commands can be configured, which are executed sequentially, allowing union and intersection based tag partitioning. See Gen2 protocol specification for further details.
This function is executed when a stream packet with protocol = CMD_SELECT_TAG is received.

Note
This command will reply with ERR_REQUEST on AS3980 as Select command is not supported by AS3980.

The format of the payload received from the host is one of the following:

  • Clear list of Select commands (no Select commands is executed):

    Byte 0 ...
    Content 0x00 (SubCmd ID) ignored

    The device sends back status ERR_NONE and no payload.

  • Add to list of Select commands, execute the Select commands and try to singulate a tag:

    Byte 0 1 2 3 4 .. 5 6 7 8 .. 8 + mask_len
    Content 0x01 (SubCmd ID) target action mem_bank address mask_len truncate mask

    The device sends back a status (no payload). ERR_MEM if no more select command can be selected or a specific Gen2 error if singulating tag failed.

  • Clear list of Select commands, add to list of Select commands, execute the Select commands and try to singulate a tag:
    Byte 0 1 2 3 4 .. 5 6 7 8 .. 8 + mask_len
    Content 0x02 (SubCmd ID) target action mem_bank address mask_len truncate mask
    The device sends back a status (no payload). ERR_MEM if no more select command can be selected or a specific Gen2 error if singulating tag failed.

Values for the different parameters are:

Namevalues
target0 = Inventoried (S0),
1 = Inventoried (S1),
2 = Inventoried (S2),
3 = Inventoried (S3),
4 = SL,
>4 = RFU
actionAction tag should perform is Select matches. See Table 6.20 in Gen2 protocol specification.
mem_bank0 = RFU,
1 = EPC,
2 = TID,
3 = User
address16bit pointer in memory bank, where mask should be applied. Will be converted into EBV format before Select command is sent.
mask_lenLength of mask in bits.
truncate0 = Disable truncation.
1 = Enable truncation.
maskActual mask data.

Definition at line 1849 of file appl_commands.c.

void callStartStop ( void  )

This function starts/stops cyclic inventory rounds and is executed when a stream packet with protocol = CMD_START_STOP is received.
The cyclic inventory rounds are performed by calling callInventoryGen2Internal() from the main loop. Therefore after starting a cyclic inventory, the host has to expect data just like after issueing the callInventoryGen2() because sendTagData() will be called repeatedly.
The format of the payload from the host is:

Byte01234
ContentupdatestartautoAcktid(2LSB)+fast(LSB)rssi

If update is zero the command is ignored. Parameter start defines if the cyclic inventories are started (1) or stopped (0).
For description of autoAck,tid, fast and rssi parameters see callInventoryGen2().
The device sends back:

Byte0
Contentcurrent start value

Subsequently callInventoryGen2() result packets are returned in a dense continuous loop.

Definition at line 2639 of file appl_commands.c.

void callTunerTable ( void  )

This function allows to update the tuner table. For in detail information to antenna tuning see callAntennaTuner() and tuner.h.
The function is executed when a stream packet with protocol = CMD_TUNER_TABLE is received. The format of the payload received from the host is one of the following:

  • Get current tuning table size:

    Byte 0
    Content 0x00 (SubCmd ID)

    The device sends back:

    Byte 0 1 2
    Content 0x00 (SubCmd ID) maximum tuning table size this device supports current tuning table size

  • Delete current tuning table:

    Byte 0
    Content 0x01 (SubCmd ID)

    The device sends back:

    Byte 0 1 2
    Content 0x01 (SubCmd ID) maximum tuning table size this device supports n/a

  • Add new entry in tuning table:

    Byte 0 1..3 4 5 6 7 8..9 10 11 12 13 14..15
    Content 0x02 (SubCmd ID) frequency Ant1: tune enable Ant1: cin Ant1: clen Ant1: cout Ant1: I*I+Q*Q Ant2: tune enable Ant2: cin Ant2: clen Ant2: cout Ant2: I*I+Q*Q

    Adds the data to the internal tuning table. The first set of data is for antenna 1 the second set for antenna 2.
    The device responds:

    Byte 0 1 2
    Content 0x02 (SubCmd ID) remaining size in tuningTable n/a

    If no more space is left in tuningTable the status will be set to ERR_NOMEM. If adding to tuningTable was successful status will be set to ERR_NONE.

  • If the device does not support antenna tuning or if a unsupported SubCmd ID was received the device sends back:
    Byte 0 1 2
    Content 0xFF 0x00 n/a
    The reply status will be set to ERR_REQUEST.

Definition at line 880 of file appl_commands.c.

void callWriteToTag ( void  )
This function writes to a previously selected (callSelectTag()) gen2 tag

and is executed when a stream packet with protocol = CMD_WRITE_TO_TAG is received.
The format of the payload from the host is:

Byte012 .. 56 .. (rxsize-1)
Contentmem_bankaddressacces_pwdata

where

  • mem_bank:
    • 0:reserved membank
    • 1:EPC membank
    • 2:TID membank
    • 3:USER membank
  • access_pw: if access password is nonzero the tag will be accessed first. (tag enters Secured state.)

The device sends back:

Byte0 1
Contentnum_words_writtentag error code if status==ERR_HEADER

Definition at line 1940 of file appl_commands.c.

void callWriteToTag6B ( void  )

This function writes to a tag using ISO18000-6b protocol command WRITE. The format of the payload from the host is:

Byte0..7 8 9
ContentID of the tagaddressbyte_data

The device sends back:

Byte0
Contentacknowledge

Definition at line 1552 of file appl_commands.c.

void callWrongCommand ( void  )

Dummy appl command which is called if an invalid command ID was received. Logs error message and returns error ERR_REQUEST to host.

Definition at line 343 of file appl_commands.c.

Variable Documentation

struct callFunction call_fkt_[CALL_FKT_SIZE]

Table of function pointers. The offset in the table matches the command identifier. When a command is received the corresponding function will be called via this table.

Definition at line 67 of file appl_commands_table.c.