Sie sind auf Seite 1von 186

UFOM

(UnionCommunity FP OEM Module)

SDK Developers Manual

version 5.0 (2012.07)

Document Revision History


Version 5.0 Date 2012.7 V3.0 DB Structure Modification Applying the additional protocal for FM-30FP FAS02NLC , Additional protocal explanation and delete useless protocal 2012.07 - Additional Protocal CMD_FP_REGISTER_TEMP_START(0xA5) CMD_FP_REGISTER_TEMP_END(0xA6) CMD_FP_ADD_TEMP_START(0xA7) CMD_FP_ADD_TEMP_START(0xA8) CMD_FP_VERIFY_TEMP(0xA9) CMD_FP_IDENTIFY_TEMP(0xAA) CMD_FP_IDELETE_TEMP(0xAB) CMD_GET_FP_MIN_SAVE(0xAC) CMD_GET_FP_USER_TEMP(0xAD) CMD_FP_EXALL(0xAE) CMD_DB_NEW_ADD_REC_EX(0xAF) CMD_DB_NEW_ADD_REC(0xB0) - Modified Protocal CMD_FP_REGISTER_START (0x50) CMD_FP_REGISTER_END(0x51) CMD_FP_CHANGE_START(0x52) CMD_FP_CHANGE_END(0x53) CMD_FP_ADD_START(0x5E) CMD_FP_ADD_END(0x5F) - Additional function - Add function for Extraction and Matching about ANSI378(Variable) - Add function for Extraction and Matching about ISO(Variable). - Register 1template per 1 finger. Increasing 1,000 user capacity. - Enhancing fast speed - Interfacing with previous protocal Comments

UFOM SDK Developers Manual [Table of Contents]


Document Revision History .............................................................................................. 2 1. Introduction .............................................................................................................. 4 1-1. UFOM Specifications ............................................................................................ 5 2. Communication between UFOM and Main Controller.................................................. 7 Communication Controller 2.1 Packet Structure ........................................................................................................ 8 2.2 Using Packets............................................................................................................ 9 Packets [e.g.] using the command packet...................................................................................... 9 2.3 Commands that can be used alone.............................................................................. 10 alone used 2.4 Commands that cannot be used alone ......................................................................... 13 3. Setting the System..................................................................................................14 System 3.1 Getting the Version .................................................................................................. 14 3.2 Getting Device State................................................................................................. 14 State Information........................................................................................ 15 3.3 Setting System Information 3.4 Getting System Information ....................................................................................... 27 Image.......................................................................................... 28 3.5 Getting Fingerprint Image 4. User Registration.........................................................................................................29 Registration 4.1 Registering a User ................................................................................................... 30 4.2 Verifying a User ...................................................................................................... 34 User........................................................................................................ 35 4.3 Deleting a User 4.4 Changing the fingerprint data data..................................................................................... 37 ta 4.5 Adding the fingerprint data ........................................................................................ 39 4.6 Identifying a User..................................................................................................... 39 User 5. Distributed transmission of data (Extended Data Transfer Protocol) Protocol).....................................40 6. Switching to boot mode (FAS02NLC)..............................................................................48 (FAS02NLC) Reference........................................................................................49 Appendix A. Protocol Reference Appendix B. Command Summary.................................................................................169 Summary Command................................................................................................ 169 B.1 Basic Command B.2 Database Access Command.............................................................................. 173 Command B.3 User Data Access Command ............................................................................ 175 B.4 DB Sector Access Command............................................................................ 175 Command B.5 F/W Download Command ................................................................................. 175 B.6 GPIO Command ................................................................................................ 176 Appendix C. Data type ................................................................................................179 Appendix D. Constant .................................................................................................181 Appendix E. Error Code List .......................................................................................183

UFOM SDK Developers Manual

1. Introduction
Thank you for your using Union Community products.

UFOM (Union Community Fingerprint OEM Module) includes module products of Union Community Co., Ltd. (FM-20FP, FM-30FP, FM-70FP, and FAS02NL). For inquiries regarding the module products, please get in touch with the following address;

This document contains explanation on the Protocol to operate the module products and how to use those products. Refer to this document to apply more accurate and diversified functions to your product. In addition, you can test most of the functions explained in this document by using the test program (DvKitUtil.exe) included in the UFOM DvKit with the use of your PC.

The Copyright of this document belongs to Union Community. Therefore the contents introduced by this document may neither be reproduced nor used without prior permission.

UNION COMMUNITY Co.,Ltd. 3F, Hyundai Topics bldg., 44-3, Bango-dong, Songpa-gu, Seoul, 138-050, Korea Tel) +82-2-6488-3000 Fax) +82-2-6488-3099 http://www.unioncomm.co.kr http://www.virditech.com sales@unioncomm.co.kr

UFOM SDK Developers Manual

1-1. UFOM Specifications


Items CPU Template Capacity Template Size FRR(False Rejection Rate) FAR(False Acceptance Rate) Enrollment Time Verification Time Host Communication Wiegand Interface Programmable I/O Power Consumption (mA) (Stanby / Operation) Supply Voltage Operation Environment Event Capacity Encryption Sensor Type (Sensor Name, Image Size) Dimension Items CPU Template Capacity Template Size FRR(False Rejection Rate) FAR(False Acceptance Rate) Enrollment Time Verification Time Host Communication Wiegand Interface Programmable I/O Power Consumption (mA) (Stanby / Operation) FMFM-30FP 32Bit RISC CPU 400MHz 5000 templates (2MB) 10,000 templates (4MB) 400 Bytes / Template < 0.1% < 0.0001% < 0.7 sec < 0.7 sec RS-232, RS-232(TTL Level), RS-485 Input Port:1, Output Port:1 Input Port:4, Output Port:8 Normal : Max 220mA Operation : Max 450mA DC 5V0.2V -20 ~ 70 / Lower Than 90% RH (Non Condensing) 12,287 Seed Optical (FCS023, 304x344) 43mm(W) x 60mm(H) x 8mm(D) FAS02NL 32Bit RISC CPU 192MHz 1000 templates 400 Bytes / Template < 0.1% < 0.0001% < 1 sec < 1 sec RS-232(TTL Level) N/A N/A Stanby : Max 25uA Operation : Max 175mA FMFM-20FP 32Bit RISC CPU 266MHz 3,360 templates (2MB), 8,160 templates (4MB) 400 Bytes / Template < 0.1% < 0.0001% < 1 sec < 1 sec RS-232, RS-232(TTL Level), RS-485 Input Port:1, Output Port:1 Input Port:4, Output Port:8 Normal : Max 200mA Operation : Max 350mA DC 5V0.2V -20 ~ 70 / Lower Than 90% RH (Non Condensing) 12,287 Seed Optical (FOS02NL, 256x292) 43mm(W) x 60mm(H) x 8mm(D) FMFM-70FP 32Bit RISC CPU 266MHz 3,360 templates (2MB), 8,160 templates (4MB) 400 Bytes / Template < 0.1% < 0.0001% < 1 sec < 1 sec RS-232(TTL Level) N/A N/A Stanby : Max 32uA Operation : Max 350mA

UFOM SDK Developers Manual


Supply Voltage Operation Environment Event Capacity Encryption Sensor Type (Sensor Name, Image Size) Dimension S5(DC 5V0.2V),S3(DC 3.3V0.2V) -20 ~ 70 / Lower Than 90% RH (Non Condensing) 12,287 Seed All-in-one Optical (FCS023, 304x344) 21mm(W) x 53mm(H) x 27mm(D) DC 3.3V0.2V -20 ~ 70 / Lower Than 90% RH (Non Condensing) 12,287 Seed Optical (FOS02NL, 256x292) 43mm(W) x 60mm(H) x 8mm(D)

FMFM-70FP, FM-20FP has been discontinued. For the FM-70FP, its sensor shall be replaced into FCS023 depending on sales situation. situation.

UFOM SDK Developers Manual

2. Communication between UFOM and Main Controller


UFOM contains FM-20FP, FM-30FP, FM-70FP and FAS02NL. The communication between UFOM and main controller is used the serial port. FM-20FP, FM-30FP have 3 serial ports and it is called as 0 channel(RS-232 or RS-232 TTL Level), 1 channel(RS485), and 2 channel(RS-232). However, FM-70FP has 1 serial ports, which are called as 0 channel (RS 232 or TTL level). FAS02NL has 1 serial ports, which are called as 0 channel (RS 232 or TTL level). For the channel communication speed of FM-20FP, FM-30FP, and FM-70FP, each default value is set to 19200 bps, but for 0 channel communication speed of FAS02NL, its default value is set to 115200 bps. UFOM can be communicated through 0 channel by default, and all the channel communication speeds are subject to change.

All Command Packet are sent from main controller to UFOM. UFOM receiving the Command Packet executes the operation according to the command and then sends the Ack Packet again. In this case, Ack Packet is used in the same type. When sending an ACK packet, UFOM sets the result of command execution to ErrorCode field. When a command is executed normally without an error, ErrorCode value is 0 (M2ERROR_ NONE).

UFOM SDK Developers Manual

2.1 2.1 Packet Structure


Communication between main controller and UFOM is executed with a 20-byte packet. In case a field is composed of 2 bytes, the lower byte becomes the first byte of the field and the higher byte becomes the second byte (Little Endian).

1Byte Start

1Byte Command

2Byte wParam

4Byte Param1

4Byte Param2

4Byte exDatalen

2Byte ErrorCode

1Byte Checksum

1Byte Exchecksum

Start Command wParam Param1 Param2 ExDatalen ErrorCode Checksum ExChecksum

Start of packet (0x02) command field System Id The first parameter where data to be transmitted if any the second parameter where data to be transmitted if any when more data transmitted, here comes the value of the length of the extradata the execution result of the command used for communication error detection used for communication error detection(extradata)

In Command field, commands to be executed by UFOM are written. For more details about how to use each command, see Appendix A Protocol Reference. Some commands need parameters to transmit. If there are any parameters to transmit, data is transmitted with wParam, Param1 and Param2. When there are more data to be transmitted other than wParam, Param1, and Param2, that is, when it is necessary to transmit more than 10 byte data, ExDatlen field is used. On ExDatlen, length of data to be transmitted rather than the data itself is written. Checksum field is used for detecting communication error, on which the value adding up each byte of the packet (Start ~ ErrorCode, 18byte) and exChecksum field is used for detecting communication error in extradata, on which the value adding up each byte of the extra packet is written.

UFOM SDK Developers Manual

2.2 Using Packets


All commands are sent from main controller to UFOM. Upon receiving a command, UFOM sends acknowledgement of the command to the main controller. Both command and acknowledgement use the same command packet format (Hereinafter, however, the packets from the main controller to UFOM are referred to as command packets and those from UFOM to the main controller are referred to as ACK packets). When sending an ACK packet, UFOM sets the result of command execution to ErrorCode. When a command is executed normally without an error, ErrorCode value is 0 (M2ERROR_ NONE).

[e.g.] using the command packet

The following shows the packet format for verifying a user whose ID is 0x12345678 using the command CMD_FP_VERIFY(0x55). As shown below, when 0x12345678 is sent, lower bytes are transmitted first (of which 0x55 is command and 0x12345678 is Param1).

1Byte Start
0x02

1Byte Command
0x55

2Byte wParam
0x0000

4Byte Param1
0x12345678

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
ExChksum

The following is the actual byte sequence when the above packet is transmitted: 0x55 0x02 0x55 0x00 0x00 0x78 0x56 0x34 0x12 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Chksum exChksum Most functions available by UFOM are performed by one command packet respectively. In other words, those functions are accomplished by sending one command packet. Some commands, however, are accomplished by several command packets. The latter requires authentication by master, which includes master registration, user registration, user fingerprint change, user deletion, and system user mode change. But, these commands can also be used alone without authentication, if master authentication option is disabled. For master authentication option, see Chapter 3.

UFOM SDK Developers Manual

2.3 Commands that can be used alone


Commands that can be used alone are classified into the following four types depending on the concerned parameter: parameter:

1. 2. 3. 4.

No parameter Transmitting a parameter Getting a parameter 8Exchanging 8-byte or larger data

Commands without Parameter

[e.g.] CMD_IS_ROOT_MASTER

This command is used to check if there is a master registered to UFOM. To check this, main controller transmits the following command packet:

Command Packet from the Main Controller (Little Endian) 1Byte Start
0x02

1Byte Command
0x06 0x06

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Upon receiving CMD_IS_ROOT_MASTER, UFOM returns ACK packet with the same structure as that of the command packet, with setting CMD_IS_ ROOT_ MASTER to Command field and M2ERROR_NONE to ErrorCode field. UFOM sends the following ACK packet:

ACK Packet of UFOM (Little Endian) 1Byte Start


0x02

1Byte Command
0x06 0x06

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0015

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

10

UFOM SDK Developers Manual


Transmitting a Parameter

[e.g.] CMD_AUTO AUTO_ONOFF [e.g.] CMD_AUTO_ONOFF

This command is used to instruct ON/OFF of UFOM relay. Main controller sends a command packet to UFOM, with setting the corresponding relay number to Param1 and the relay ON/OFF state to Param2. Receiving the command packet, UFOM performs the command and returns ACK packet with an error value in ErrorCode field of the packet.

The following is the command packet to turn Relay 1 ON (0x0001).

Command Packet of the main controller (Little Endian) 1Byte Start


0x02

1Byte Command
0x1a 0x1a

2Byte wParam
0x0000

4Byte Param1
0x00000001

4Byte Param2
0x00000001

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

ACK Packet of UFOM (Little Endian) 1Byte Start


0x02

1Byte Command
0x1a 0x1a

2Byte wParam
0x0000

4Byte Param1
0x00000001

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

11

UFOM SDK Developers Manual


Getting a Parameter

Getting a parameter refers to having UFOM sending an ACK packet with setting the information asked by main controller to Param1 or Param2 field of the packet.

[e.g.] CMD_GET_SYSTEM_INFO

CMD_GET_SYSTEM_INFO is used for main controller to get system values set in UFOM. The following shows an example of getting the current system security level: If the main controller sends a command packet to UFOM with setting CMD_ GET_SYSTEM_INFO(0x30) to Command field and SI_SECURITY_ LEVEL to Param1, UFOM sends an ACK packet with setting the current security level to Param2 field of the ACK packet. With the ACK packet, you can see that the current security level is Normal (0x05).

Command Packet of the main controller (Little Endian) 1Byte Start


0x02

1Byte Command
0x30 0x30

2Byte wParam
0x0000

4Byte Param1
0x00000002

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

ACK Packet of UFOM (Little Endian) 1Byte Start


0x02

1Byte Command
0x30 0x30

2Byte wParam
0x0000

4Byte Param1
0x00000002

4Byte Param2
0x00000005

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

12

UFOM SDK Developers Manual


8Exchanging 8-byte or Larger Data

When it is necessary to exchange 8-byte or larger data, exDatalen field is used. The value in extraData field indicates that there is extra data following the current packet, which is as large as the size specified in exDatalen field. Therefore, main controller or UFOM should receive as more data as the specified size.

[e.g.] CMD_GET_IMAGE

This command is used to get the images captured from UFOM to main controller. Set to Param1 field a value to get the desired image from UFOM. Available settings are VIEW_NORMAL (0x01, normal image size), VIEW_HALF (0x02, half of normal image size) and VIEW_QUARTER (0x04, quarter of normal image). Amount of data to get depends on the selected image size. The main controller reads the extra data size from extraData field of ACK packet from UFOM, and gets as large image as the selected size.

Command Packet of the main controller (Little Endian) 1Byte Start


0x02

1Byte Command
0x43 0x43

2Byte wParam
0x0000

4Byte Param1
0x00000001

4Byte Param2
0x00000000

4Byte 4Byte exDatalen


0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

ACK Packet of UFOM (Little Endian) 1Byte Start


0x02

1Byte Command
0x43 0x43

2Byte wParam
0x0000

4Byte Param1
0x01580130

4Byte Param2
0x00000000

4Byte exDatalen
0x00019880

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte 1Byte Exchecksum


0xE1

After sending the above ACK packet, UFOM sends the corresponding image data to the main controller.

2.4 Commands that cannot be used alone


Most commands that require master fingerprint, such as significant option change, user registration/deletion and fingerprint change, cannot be used alone but needs several commands to accomplish the required function. If master authentication option is disabled, however, these commands can also be used alone without authentication. For more details on how to use these commands, see Chapter 3.

13

UFOM SDK Developers Manual

3. Setting the System


3.1 Getting the Version
To get UFOM protocol version, CMD_GET_VERSION command is used. The following shows an example of getting the current protocol version that is 1.0, using CMD_GET_VERSION command.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x05 0x05

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x05 0x05

2Byte wParam
0x0000

4Byte Param1
0x00000001

4Byte Param2
0x00000002

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

3.2 Getting Device State


Using CMD_DEVICE_TEST command, you can test UFOM sensor and flash memory states.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x10 0x10

2Byte wParam
0x0000

4Byte Param1
0x00000003

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x10 0x10

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte 1Byte Checksum


Chksum

1Byte Exchecksum
0x00

14

UFOM SDK Developers Manual

3.3 Setting System Information


Using CMD_SET_SYSTEM_INFO command, you can change system information. Set an item to change to Param1 and a new value for the item to Param2.

Setting whether or not to use master authentication (SI_USING_MASTER_AUTHENTICATION)

With the above command, you can set whether to or not to use master authentication for user registration. Default is not to use master authentication. The following shows an example of using master authentication. Set CMD_SET_SYSTEM_INFO (0x20) to Command field, SI_USING_ MASTER _AUTHENTICATION (0x00) to Param1, and 1 to Param2. In case 0 is set to Para m2, the commands that require master authentication can be used without master authentication and thus can be performed immediately.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000001

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000001

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

(CMD_FP_VERIFY_MASTER CMD_FP_VERIFY_MASTER) Verifying Master Authentication (CMD_FP_VERIFY_MASTER)

When designating whether or not to select master authentication, adjustment of security level is executed only once. If you want to correct security level N times, you must execute CMD_FP_VERIFY_MASTER(0x57) in advance. The following shows an example that enables to set security level two times. Set CMD_FP_VERIFY_MASTER(0x57) to Command field, and then designate your desired frequency in Param1. That is, set 0x02 to Param1 when you want to execute two times. (Caution: Master should be registered without fail)

Command Packet (Little Endian) 1Byte 1Byte 2Byte 4Byte 4Byte 4Byte 2Byte 1Byte 1Byte

15

UFOM SDK Developers Manual


Start
0x02

Command
0x57 0x57

wParam
0x0000

Param1
0x00000002

Param2
0x00000000

exDatalen
0x00000000

ErrorCode
0x0000

Checksum
Chksum

Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x57 0x57

2Byte wParam
0x0000

4Byte Param1
0x00000001

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

(CMD_FP_VERIFY_MASTER_END CMD_FP_VERIFY_MASTER_END) Closing verification of Master Authentication (CMD_FP_VERIFY_MASTER_END)

If you want to stop further revision regardless of the frequency of security level adjustment, execute CMD_FP_VERIFY_MASTER_END(0x58). The following shows the designation that now enables any further use of security level.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x58 0x58

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x58 0x58

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Setting the existence of log data record ( SI_SAVE_LOGEVENT)

For event list, please refer to Appendix D. Constant. Constant. This Command is used to set the record of event that occurs in registration, authentication, deletion, and revision in the log data. The following shows an example of activating the log data record. Set CMD_SET_SYSTEM_INFO(0x20) to Command field, set SI_SAVE_LOGEVENT (0x01) to Param1, and set 1 to Param2.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000001

4Byte Param2
0x00000001

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

16

UFOM SDK Developers Manual


Ack Packet (Little Endian) 1Byte Start
0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000001

4Byte Param2
0x00000001

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Setting security level (SI_SECURITY_LEVEL)

This command is used to set the system security level. Default is SLEVEL_ NORMAL (0x05). This security level is used only for verification. But, the security level for identification should be set with SI_SECURITY_LEVEL_IDENTIFY.

The following is an example of setting the security level to one level higher than normal level. Set CMD_SET_SYSTEM_INFO (0x20) to Command field, SI_ SECURITY_LEVEL (0x02) to Param1, and

SLEVEL_ABOVE_NORMAL (0x06) to Param2.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000002

4Byte Param2
0x00000006

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte 4Byte Param2


0x00000000

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Changing communication speed (SI_COMM_SPEED)

By setting SI_COMM_SPEED to Param1 in CMD_SET_SYSTEM_INFO, you can change the communication speed of UFOM. At present, UFOM supports 9600bps to 115200bps. Upon receiving this command, UFOM changes the communication speed of the current communication channel and returns ACK. When ErrorCode in the ACK is M2ERROR_ NONE, main controller resets its communication port to the changed speed, to communicate with UFOM. For constants about the communication speed, see Appendix B.

The following shows an example of changing the communication channel speed to 57600bps (0x0003). Command Packet (Little Endian) 1Byte Start
0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000004

4Byte Param2
0x00000003

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

17

UFOM SDK Developers Manual


Ack Packet (Little Endian) 1Byte Start
0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000004

4Byte Param2
0x00000003

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

level Setting the security level for identification (SI_SECURITY_LEVEL_IDENTIFY)

This command is used for setting the system security level for identification. Default is SLEVEL_HIGHER (0x08). In general, the security level for identification requires to be higher than the security level for verification. Therefore, you cannot set this parameter value lower than SLEVEL_ABOVE_NORMAL (0x06).

The following is an example of setting the security level to one level higher than normal level. Set CMD_SET_SYSTEM_INFO (0x20) to Command field, SI_SECURITY_ LEVEL_IDENTIFY (0x08) to Param1, and SLEVEL_HIGHEST (0x09) to Param2.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000008

4Byte Param2
0x00000009

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000008

4Byte Param2
0x00000009

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

(SI_WIEGAND_FORMAT WIEGAND_FORMAT) Setting Wiegand Format (SI_WIEGAND_FORMAT)

This Command is used to set the Format of Wiegand Protocol. Supported Formats are as follow; Default is WIEGAND_FMT_26BIT. 0x0000 WIEGAND_NOT_USED 0x012c WIEGAND_FORMAT_26BIT 0x012e WIEGAND_FORMAT_34BIT The following shows an example of setting to WIEGAND_FORMAT_34BIT. Set CMD_SET_SYSTEM_INFO (0x20) to Command field, set SI_WIEGAND_FORMAT(0x09) to Param1, and set WIEGAND_FORMAT_34BIT (0x012E) to Param2.

Command Packet (Little Endian) 1Byte 1Byte 2Byte 4Byte 4Byte 4Byte 2Byte 1Byte 1Byte

18

UFOM SDK Developers Manual


Start
0x02

Command
0x20 0x20

wParam
0x0000

Param1
0x00000009

Param2
0x0002E01

exDatalen
0x00000000

ErrorCode
0x0000

Checksum
Chksum

Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000009

4Byte Param2
0x0002E01

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

(SI_WIEGAND_SITECODE WIEGAND_SITECODE) Setting Wiegand Site Code (SI_WIEGAND_SITECODE)

This Command is used to set the site code of Wiegand Protocol. 8bit is used when Wiegand format is WIEGAND_FORMAT_26BIT, whereas 16bit is used when it is WIEGAND_FORMAT_34BIT. Command Packet (Little Endian) 1Byte Start
0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000000A

4Byte Param2
Sitecode

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000000A

4Byte Param2
Sitecode

4Byte exDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

(SI_LFD_LEVEL LFD_LEVEL) Setting the function of identifying fake fingerprint (SI_LFD_LEVEL)

This Command is used to determine the function of identifying fake fingerprint when capturing the fingerprint. The level of fake fingerprint identifying function is divided into three types (OFF = 0x00, NORMAL = 0x01, HIGH = 0x02). You can set Off to Param2 if you dont want to use the fake fingerprint identifying function. The following shows an example of setting LFD_LEVEL value to HIGH. Set CMD_SET_SYSTEM_INFO (0x20) to Command field, SI_LFD_LEVEL (0x1a) to Param1, and HIGH that is the highest level to Param2.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001A

4Byte Param2
0x00000002

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte 1Byte Checksum


Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte 1Byte 2Byte 4Byte 4Byte 4Byte 2Byte 1Byte 1Byte

19

UFOM SDK Developers Manual


Start
0x02

Command
0x20 0x20

wParam
0x0000

Param1
0x0000001A

Param2
0x00000002

ExDatalen
0x00000000

ErrorCode
0x0000

Checksum
Chksum

Exchecksum
0x00

(SI_ROTATE_CAPTURE ROTATE_CAPTURE) Setting Capture Image Rotation (SI_ROTATE_CAPTURE)

This Command is used to determine whether or not to use the image of captured fingerprint rotated by 180 degrees.

The following shows an example of rotating the fingerprint image by 180 degrees by setting SI_ROTATE_CAPTURE value to 1. Set CMD_SET_SYSTEM_INFO (0x20) to Command field, set SI_ROTATE_CAPTURE (0x1b) to Param1, and set 1 to Param2. Default value is 0.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001B

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001B

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Setting

authentication authentication

of

rotating

the

image

by

180

degrees degrees

(SI_ROTATE_MATCHING) (SI_ROTATE_MATCHING) ROTATE_MATCHING

This Command is used to select whether or not to authenticate when using SI_ROTATE_CAPTURE (0x1b) that is the command for determining the use or non-use of the captured fingerprint image rotated by 180 degrees. When using SI_ROTATE_CAPTURE (0x1b), if SI_ROTATE_MATCHING (0x1c) is applied, authentication is performed regardless of the image rotated by 180 degrees. If it is not in use, authentication is not performed. Use 0 when not in use, whereas use 1 when in use. Default value is 0. The following shows an example of using fingerprint image for authentication by setting SI_ROTATE_MATCHING value to 1. Set CMD_SET_SYSTEM_INFO (0x20) to Command field, set SI_ROTATE_MATCHING (0x1c) to Param1, and set 1 to Param2.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001C

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

20

UFOM SDK Developers Manual


Ack Packet (Little Endian) 1Byte Start
0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001C

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

21

UFOM SDK Developers Manual


sensing (SI_AUTO_ONOFF SI_AUTO_ONOFF) Setting use of auto sensing (SI_AUTO_ONOFF)

This Command is used to activate or deactivate the Auto Sensing function of fingerprint sensor, performing FLASH SAVE regardless of the users option and in spite of the same function as CMD_AUTO_ONOFF(0x1a). When in use, this Command performs FLASH SAVE. Therefore it is deactivated when not in use.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001D

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001D

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

(SI_COMM0_SPEED SI_COMM0_SPEED) Change Communication Speed COMM0 (SI_COMM0_SPEED)

This Command is used to designate communication speed of Comm0(RS232) channel. Saved in flash memory, this function enables to communicate in the applied communication speed even if UFOM is reset. The following shows an example of changing the current communication channel speed into 57600bps(0x03). doesn FM(Note : It doesnt support FAS02NLC and FM-70FP)

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001E

4Byte Param2
0x00000003

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001E

4Byte Param2
0x00000003

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

22

UFOM SDK Developers Manual


(SI_COMM0_SPEED SI_COMM0_SPEED) Change Communication Speed COMM1 (SI_COMM0_SPEED)

This Command is used to designate the communication speed of Comm1(RS485) channel. Saved in flash memory, this function enables to communicate in the applied communication speed even if UFOM is reset. The following shows an example of changing the current communication channel speed into 57600bps(0x03) doesn FAS02NLC FM-70FP) (Note : It doesnt support FAS02NLC and FM-70FP)

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001F

4Byte Param2
0x00000003

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x0000001F

4Byte Param2
0x00000003

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

COMM2 (SI_COMM0_SPEED SI_COMM0_SPEED) Change Communication Speed COMM2 (SI_COMM0_SPEED)

This Command is used to designate the communication speed of Comm2. Saved in flash memory, this function enables to communicate in the applied communication speed even if UFOM is reset. The following shows an example of changing the current communication channel speed into 57600bps(0x03) doesn FM-70FP) (Note : It doesnt support FAS02NLC and FM-70FP)

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000020

4Byte Param2
0x00000003

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000020

4Byte Param2
0x00000003

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

23

UFOM SDK Developers Manual


Set the export of display whether authenticated or not (SI_SEND_CAPTURE_SUCCESS) SI_SEND_CAPTURE_SUCCESS)

This Command is used to display On and Off regarding the success or failure of image authentication when fingerprint is captured.

The following shows an example of changing the display of success or failure of authentication into On.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000021

4Byte Param2
0x00000003

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000021

4Byte Param2
0x00000003

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Setting quick fingerprint registration (SI_FAST_MODE)

This Command is used to reduce the time for fingerprint registration. When using SI_FAST_MODE, the rate of authentication is decreased.

The following shows an example of activating the FAST_MODE.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000022

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000022

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

24

UFOM SDK Developers Manual


(SI_ROTATE_MINUTIAE) SI_ROTATE_MINUTIAE Change into auto sensing function (SI_ROTATE_MINUTIAE)

During

Auto

Sensing

activation,

this

Command

is

used

to

select

CMD_FP_IDENTIFY(0x56)

or

CMD_GET_MINUTIAE(0x40) when the user authenticates fingerprint. CMD_GET_MINUTIAE(0x40) is applied when 1 is selected, whereas CMD_FP_IDENTIFY(0x56) is applied when 0 is selected. Dafault is 0. The following shows an example of activating CMD_GET_MINUTIAE.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000025

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000025

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

SI_LFD_WHITE_MODE LFD_WHITE_MODE) Option on the use of fake fingerprint color changes inspection (SI_LFD_WHITE_MODE)

This is the option that determines whether to use or not the SI_LFD_WHITE_MODE(0x23) fake fingerprint color changes inspection. You can turn Off if you want to increase the speed of authentication related with module authentication speed. If the security level should be higher, you can use it with ON. The following shows an example of activating SI_LFD_WHITE_MODE(0x23). only) (Note : It supports FAS02NLC only)

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000023

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000023

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

25

UFOM SDK Developers Manual


Reduce fingerprint image size (SI_CAPTURE_OLD_SIZE)

This Option is used to improve the speed of registration by reducing the fingerprint image when registering SI_CAPTURE_OLD_SIZE (0x24) fingerprint. When this option is used, the speed of registration becomes faster, but the rate of authentication can worsen as the image gets reduced. The following shows an example of activating SI_CAPTURE_OLD_SIZE (0x24). only) (Note : It supports FAS02NLC only)

Command Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000024

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte 1Byte Start


0x02

1Byte Command
0x20 0x20

2Byte wParam
0x0000

4Byte Param1
0x00000024

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Setting Template type (SI_TEMPLATE_TYPE) SI_TEMPLATE_TYPE (0x26) can set template type as following Param2s option Template type 0x00 : Union[Fixed](400byte) 0x01 : ISO[Fixed](500byte) 0x02 : ISO[Fixed](600byte) 0x03 : ANSI378[Variable] 0x04 : ISO[Variable]

Here is example when it uses ANSI378 [Variable] Command Packet (Little Endian) 1Byte Start
0x02

1Byte Command
0x20

2Byte wParam
0x0000

4Byte Param1
0x00000026

4Byte Param2
0x00000003

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x20

2Byte wParam
0x0000

4Byte Param1
0x00000026

4Byte Param2
0x00000003

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

26

UFOM SDK Developers Manual

3.4 Getting System Information


With CMD_GET_SYSTEM_INFO command, you can get the current system setting. Set an item to get to Param1. Upon receiving this command, UFOM returns ACK with setting the current setting of the item to Param2 field.

The following is an example of getting the current system security level. With the ACK packet, you can see that the current security level is set to SLEVEL_ ABOVE_NORMAL.

Command Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x30 0x30

2Byte wParam
0x0000

4Byte Param1
0x00000002

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet (Little Endian) 1Byte Start


0x02

1Byte Command
0x3 0x30

2Byte wParam
0x0000

4Byte Param1
0x00000002

4Byte Param2
0x00000006

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

27

UFOM SDK Developers Manual

3.5 Getting Fingerprint Image


In order to get a fingerprint image in the current Fingerprint Input window from UFOM, use CMD_GET_IMAGE. When using this command, set the image size to get to Param1 field. The smaller the image size is, the lower the image quality and the shorter the time to get the image will be. Available settings are VIEW_NORMAL (0x01, normal image size), VIEW_HALF (0x02, half of normal image) and VIEW_QUARTER (0x04, quarter of normal image size). Amount of data to get depends on the selected image size. Main controller reads the image size from lwExtraData and hwExtraData fields of ACK packet of UFOM, and gets as large image as the selected size (in bytes).

The following is an example of getting an image in its normal size. Right after returning ACK packet, UFOM sends as large image data as the size designated in ExtraData field to main controller.

Command Packet of the main controller (Little Endian) 1Byte Start


0x02

1Byte Command
0x43 0x43

2Byte 2Byte wParam


0x0000

4Byte Param1
0x00000001

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Ack Packet of UFOM (Little Endian) 1Byte Start


0x02

1Byte Command
0x43 0x43

2Byte wParam
0x0000

4Byte Param1
0x01580130

4Byte Param2
0x00000000

4Byte ExDatalen
0x00019880

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0xE1

28

UFOM SDK Developers Manual

4. User Registration
Master refers to a user who is authorized to access the information about user registration / deletion and other important information. When UFOM is delivered from factory, nothing has been registered in flash memory. Therefore, master fingerprint should be registered first. If master fingerprint has not been registered, commands the require master authentication return the error code M2ERROR_MASTERFP_NOT_FOUND. Maximum 5 masters can be registered. . Commands for which master authentication is indispensable (But, can be used alone if master authentication option is disabled)

CMD_SET_SYSTEM_INFO CMD_FP_REGISTER_START CMD_FP_DELETE CMD_DB_GET_RECCOUNT CMD_DB_ADD_REC CMD_DB_DELETE_REC CMD_DB_GET_REC CMD_DB_GET_FIRSTREC CMD_DB_GET_NEXTREC CMD_DB_GET_CURRENTREC CMD_DB_DELETE_ALL CMD_LOG_GET_RECCOUNT CMD_LOG_GET_REC CMD_LOG_DELETE_ALL CMD_RECOVER_MASTER

What Whats root master?

When the system is first used after delivery from factory, master should be registered first. The master that is registered first is called root master. Registering the root master does not require master authentication.

Checking if there are masters registered

CMD_GET_MASTER_COUNT is used to check whether there are masters registered to the system and to register masters. Upon receiving this command, UFOM returns ACK packet with setting the number of masters currently registered to the system to Param1 field. When the number of masters is 0, UFOM registers masters.

29

UFOM SDK Developers Manual


CMD_IS_ROOT_MASTER is also available for checking if there are masters registered.

4.1 Registering a User


Users are classified into ordinary users and masters. Master refers to a user who has the right to register new users and/or delete other users. Commands to register a master and an ordinary user are the same except the parameter values.

Registering a fingerprint requires master authentication and also requires to enter the same fingerprint twice for confirmation. User registration process is outlined below.

Summary of User Registration Process

CMD_FP_VERIFY_MASTER

// Verify the user with master fingerprint. (Omitted if master authentication option is disabled)

CMD_FP_REGISTER_START CMD_FP_REGISTER_END

// Get the fingerprint to be registered. // Get the second input of the same fingerprint for confirmation.

4.1.1 Master Registration Process

1. CMD_FP_VERIFY_MASTER
This command is used to verify a user with the master fingerprint before registering the user. First, the user should put the master fingerprint on the Fingerprint Input window. Then, main controller sends this command to UFOM.

After the user puts the master fingerprint on the Fingerprint Input window, the main controller sends CMD_FP_VERIFY_MASTER to UFOM. UFOM compares the fingerprint put on the Fingerprint Input window and the one registered to the system, and returns ACK packet with setting M2ERROR_NONE to ErrorCode field if they are matched or setting an error value if they are not matched. When the ErrorCode set to ACK packet is M2ERROR_NONE, the master controller proceeds to the next step. Param1 of ACK packet carries the user ID of the verifying master.

30

UFOM SDK Developers Manual


2. CMD_FP_REGISTER_START
1) In case of storing 1 template per 1 finger This is a process to register users FP with users ID After place users FP input UserID into Param1, input 1 into upper 2 byte and input 1 into lower 2byte in Param2. , then after sending order about CMD_FP_REGISTER_START to UFOM, it will register User. If UFOM s User ID is correct and capture is success, it will show M2ERROR_NONE, if not it will return error value.. 2) In case of storing 2 templates per 1 finger This is a process to register users FP with users ID . After place users FP input UserID in Param1, input 1 into Param 2. and then send order about , CMD_FP_REGISTER_START to UFOM If UFOM s User ID is correct and capture is success, it will show M2ERROR_NONE, if not it will return error value.. If ACK Packet error code is M2ERROR_NONE, it will move next step

3. CMD_FP_REGISTER_END (In case of 2 template per 1 finger)

This is a process for input Users ID and Users FP again. Main Controller displays the message about remove and place finger to user. It will be completed done normal register if it remove finger on the sensor.. Main Controller input User ID from CMD_FP_REGISTER_START to Param1, input 1 to Param2 and then send the order about CMD_FP_REGISTER_END to UFOM In case of Non existed User ID or capture is succssful, then after compare to inputted FP in previous step, If it shoud be correct. And then afther saves User ID and FP to Database in UFOM, return M2ERROR_NONE. However if not, it return Error code.. [e.g.] Registering a user

The following shows examples of the packets used for registering a master whose user ID is '0x12345678' under the authentication of another master whose ID is 0x00001111.

1) CMD_FP_VERIFY_MASTER Command Packet 1Byte Start


0x02

1Byte Command
0x57 0x57

2Byte 2Byte wParam


0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

31

UFOM SDK Developers Manual


2) CMD_FP_VERIFY_MASTER ACK Packet 1Byte Start
0x02

1Byte Command
0x57 0x57

2Byte wParam
0x0000

4Byte Param1
0x00001111

4Byte Param2
0x00000000

4Byte 4Byte ExDatalen


0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

3) CMD_FP_REGISTER_START Command Packet 1Byte Start


0x02

1Byte Command
0x50 0x50

2Byte wParam
0x0000

4Byte Param1
0x12345678

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte 1Byte Checksum


Chksum

1Byte Exchecksum
0x00

4) CMD_FP_REGISTER_START ACK Packet 1Byte Start


0x02

1Byte Command
0x50 0x50

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

5) CMD_FP_REGISTER_END Command Packet 1Byte Start


0x02

1Byte Command
0x51 0x51

2Byte wParam
0x0000

4Byte Param1
0x12345678

4Byte Param2
0x00000001

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

6) CMD_FP_REGISTER_END ACK Packet 1Byte Start


0x02

1Byte Command
0x51 0x51

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

Values set to Param1 and Param2 of CMD_FP_REGISTER_START and CMD_FP_REGISTER_END must be the same.

Root Master Registration Process Root master registration process is the same as the above master registration process, except that it does not require master authentication as there is no master registered to the system. In other words, registering the first user to the system, that is root master, does not require the first process of master registration CMD_FP_ VERIFY _MASTER. To register root master, main controller sends commands to UFOM in the following sequence:

32

UFOM SDK Developers Manual


Summary of Root Master Registration Process // CMD_FP_REGISTER_START CMD_FP_REGISTER_END Get the fingerprint to be

registered. // Get the second input of the same fingerprint for confirmation.

4.1.2 Ordinary User Registration Process


This is the process to register a new user to UFOM database, which is the same as 3.1.1 Master Registration Process except that 0 should be set to Param2.

33

UFOM SDK Developers Manual

4.2 Verifying a User


This refers to a process to verify a user registered in database by comparing the fingerprint displayed on the current Fingerprint Input window and the one stored in the database. For this process, CMD_FP_VERIFY is used.

Upon receiving the user ID input, main controller displays a message to put the fingerprint on the Input window. The main controller sends CMD_FP_VERIFY to UFOM, together with the user ID. Wait for ACK from UFOM. UFOM returns M2ERROR_NONE to the main controller if the fingerprint saved with the received user ID is matched with the one in the current Fingerprint Input window. Otherwise, it returns the corresponding error code.

1234 [e.g.] Verifying a user whose user ID is 1234

CMD_FP_VERIFY Command Packet 1Byte Start


0x02

1Byte Command
0x55 0x55

2Byte wParam
0x0000

4Byte Param1
0x00001234

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

CMD_FP_VERIFY ACK Packet 1Byte Start


0x02

1Byte Command
0x55 0x55

2Byte wParam
0x0000

4Byte Param1
0x00001234

4Byte Param2
0x00001234

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

34

UFOM SDK Developers Manual

4.3 Deleting a User


This refers to a process to delete a user registered in database. Deleting a registered user requires master authentication.

Summery of User Deletion Process

CMD_FP_VERIFY_MASTER (Omitted if master authentication option is disabled) CMD_FP_DELETE

CMD_FP_VERIFY_MASTER 1. CMD_FP_VERIFY_MASTER
This command is used to verify with the master fingerprint whether a user to be deleted is actually registered, before deleting the user. Main controller should ask the master to put his fingerprint on the Fingerprint Input window and then send this command to UFOM.

The main controller displays on the panel a message asking the master to put his fingerprint. The master puts his fingerprint on the Input window. The main controller sends CMD_FP_VERIFY_MASTER to UFOM. UFOM verifies if the fingerprint put on the Fingerprint Input window is the master fingerprint registered to the system. If so, it returns ACK packet with setting M2ERROR_NONE to ErrorCode field. Otherwise, it returns the corresponding error code. When the ErrorCode of ACK packet is M2ERROR_NONE, the main controller proceeds to the next step.

2. CMD_FP_DELETE
When master authentication process is succeeded, the main controller sends to UFOM the user ID to be deleted from database, by setting the user ID to Param1.

The main controller receives the input of an user ID to be deleted. It sends CMD_FP_DELETE to UFOM, together with the user ID. UFOM deletes the user ID. When the error code of ACK packet is M2ERROR_NONE, it means that the user is deleted.

35

UFOM SDK Developers Manual


ID 1234 [e.g.] Deleting a user whose user ID is 1234

For example, the content of packets for deleting a user whose user ID is 1234 under authentication by the master whose ID is 00000001 is given below:

1) CMD_FP_VERIFY_MASTER Command Packet 1Byte Start


0x02

1Byte Command
0x57 0x57

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

2) CMD_FP_VERIFY_MASTER ACK Packet 1Byte Start


0x02

1Byte Command
0x57 0x57

2Byte wParam
0x0000

4Byte Param1
0x00000001

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

3) CMD_FP_DELETE Command Packet 1Byte Start


0x02

1Byte Command
0x54 0x54

2Byte wParam
0x0000

4Byte Param1
0x00001234

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

4) CMD_FP_DELETE ACK Packet 1Byte Start


0x02

1Byte Command
0x54 0x54

2Byte wParam
0x0000

4Byte Param1
0x00001234

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

36

UFOM SDK Developers Manual

4.4 Changing the fingerprint data


This refers to a process to change only the fingerprint data of the registered user.

Summary of Fingerprint Data Change Process

CMD_FP_VERIFY_MASTER (Omitted if master authentication option is disabled) CMD_FP_CHANGE_START CMD_FP_CHANGE_END

1. CMD_FP_CHANGE_START
1) In case of chaning 1 template per 1 finger It orders to capture first FP to UFOM Main controller asks placing next FP then it sends order about CMD_FP_CHANGE_START to UFOM , Main controller displays the message to place new FP for register to User Main controller send the order about CMD_FP_CHANGE_START with User ID in Packets Param1. If it does not register User ID, it will return M2ERROR_DB_WRONG_USERID If it rigsters FP successfully in UFOM, it will return M2ERROR_NONE. If not, it will return error code 2) In case of changing 2 template per 1 finger It orders to capture first FP to UFOM Main Controller asks placking next FP then it sens order about CMD_FP_CHANGE_START to UFOM , Main controller displays the message to place new FP for register to User Main controller send the order about CMD_FP_CHANGE_START with User ID in Packets Param1. If it does not register User ID, it will return M2ERROR_DB_WRONG_USERID If it rigsters FP successfully in UFOM, it will return M2ERROR_NONE. If not, it will return error code. If ACK Packet error code is M2ERROR_NONE, it will proceed with next step.

2. CMD_FP_CHANGE_END (In case of 2 template per 1 finger)

This Command is used to complete FP change after inputting FP again. Main controller send the order about CMD_FP_CHANGE_END after remove and place users FP to UFOM Main controller displays the message that remove and place users FP Main controller send the order about CMD_FP_CHANGE_END with User ID into Param1 to UFOM If it change FP successfully in UFOM, it will returnM2ERROR_NONE. If not, it will return error code

37

UFOM SDK Developers Manual


is [e.g.] When changing the fingerprint of the user whose user ID is 1234

1) CMD_FP_CHANGE_START Command Packet 1Byte Start


0x02

1Byte Command
0x52 0x52

2Byte wParam
0x0000

4Byte Param1
0x00001234

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

2) CMD_FP_CHANGE_START Ack Packet 1Byte Start


0x02

1Byte Command
0x52 0x52

2Byte wParam
0x0000

4Byte Param1
0x00001234

4Byte Param2
0x00000064

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

3) CMD_FP_CHANGE_END Command Packet 1Byte Start


0x02

1Byte Command
0x53 0x53

2Byte wParam
0x0000

4Byte Param1
0x00001234

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

4) CMD_FP_CHANGE_END Ack Packet 1Byte Start


0x02

1Byte 1Byte Command


0x53 0x53

2Byte wParam
0x0000

4Byte Param1
0x00001234

4Byte Param2
0x00000064

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

38

UFOM SDK Developers Manual

4.5 Adding the fingerprint data


This is the process that adds other fingerprint data to the registered user.

Summary of the process of adding fingerprint data

CMD_FP_VERIFY_MASTER Off) CMD_FP_ADD_START CMD_FP_ADD_END

(Omitted when master authentication option is

It is same as the user registration process, but differs in that the users ID registered in Param1 should be entered without fail.

4.6 Identifying a User


This refers to a process to identify a user by retrieving all users registered to database, without the user ID but only with the fingerprint on the current Fingerprint Input window. For user identification, CMD_FP_IDENTIFY is used.

Host displays a message asking the user to put his fingerprint on the Fingerprint Input window. The host sends CMD_FP_IDENTIFY to UFOM. If the captured fingerprint is the one registered to database, UFOM returns ACK packet with setting the retrieved user ID to Param1 together with M2ERROR NONE. Otherwise, it returns the corresponding error code.

1234 [e.g.] Identifying the fingerprint of a user whose user ID is 1234

1) CMD_FP_IDENTIFY Command Packet 1Byte Start


0x02

1Byte Command
0x56 0x56

2Byte wParam
0x0000

4Byte Param1
0x00000000

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

2) CMD_FP_IDENTIFY ACK Packet 1Byte Start


0x02

1Byte Command
0x56 0x56

2Byte wParam
0x0000

4Byte Param1
0x00001234

4Byte Param2
0x00000000

4Byte ExDatalen
0x00000000

2Byte ErrorCode
0x0000

1Byte Checksum
Chksum

1Byte Exchecksum
0x00

39

UFOM SDK Developers Manual

5. Distributed transmission of data (Extended Data Transfer Protocol)


Extended Data Transfer Protocol

This is the explanation on the protocol of sending extra data divided into small blocks during the transmission of extra data between Host and Module.

1.

protocols All protocols of UFOM consist of the following structures


Host sends the Command including extra data, and then UFOM executes the applicable Command and sends ACK Packet. In this case, there is no extra data in the Ack Packet. Host sends the Command, and then UFOM executes the applicable Command and sends ACK Packet including extra data. In this case, there is no extra data in the Command Packet. Host sends the Command, UFOM executes the applicable Command, and then sends ACK Packet. In this case, Command Packet and ACK Packet have no extra data. In the cases of can be transmitted with the protocol divided. and as above, the extra data

1.1 When dividing extra data to be transmitted from Host to Module


Packet (1) Packet (2) Packet (n)

Packet (1) is the packet that includes Command Packet in 20 byte, whereas Packet (2) ~ Packet (n) are the packets that include the extra data divided. Transmission can be done to each Packet with Header Packet attached as follow. Header Packet is in the same structure as that of the basic protocol.

Header Packet (20byte)

Data Packet (N byte)

Start : Command : Wparam : Param1 :

0xA0 0x80, Ack(0x06) Number of total data packet. Number of Packet (1) ~ packet (n) Index of data packet. It starts from 0 when sending Packet (1), whereas 1 when sending Packet 2. Data packet length. 20 when sending Packet (1). It is the length of data packet to be divided and transmitted from Packet 2. It should be the same as Param2.

Param2 : Ext data length :

40

UFOM SDK Developers Manual


Error code : Checksum : Ext checksum : 0x0000 Start ~ Sum of error codes. Sum of Data Packets

In this case, Ack Packet simply sends Command in 0x06 to header packet (20byte) without any data packet.

At the time of sending Packet (1), checksum out of Command Packet 20byte and the checksum of extra data can be disregarded. However, the extra data length should be equal to the sum of the length of extra data to be transmitted. Therefore the structure of normal protocol is sent with the structure divided.

Normal

Host

Module

Command

Extra

Extra

Extra

Command

Ack Packet

Extended

Header Packet (index0) Packet(1) Header Packet (index1)

Command Packet Ack Packet

Divided extra data (1) Ack Packet

Packet(2) Header Packet (index2) Divided extra data (2)

Packet(3) Header Packet (index N) Divided extra data (n)

Ack Packet

Packet(n)

Ack Packet

Command

Ack Packet result after Command Packet is executed

41

UFOM SDK Developers Manual


Ex) Ex) When executing CMD_FP_MIN_VERIFY(0x5c)

This is the case when the Host divides extra data into 150-byte blocks for transmission. When the command is executed, the extra data in 400byte is required.

Host sends the command packet to packet1, sends the divided 150-byte block data packet to packet 2~packet 3, and then sends the other 100-byte block data packet to packet 4.

UFOM executes the Command and transmits Ack Packet about the Command when it receives all the data.

packet1 <S> A0 80 04 00 00 00 00 00 14 00 00 00 14 00 00 00 00 00 4C F0 02 5C 00 00 01 00 00 00 00 00 00 00 90 01 00 00 00 00 00 00 <R> A0 06 04 00 00 00 00 00 14 00 00 00 00 00 00 00 00 00 BE 00

packet2 <S> A0 80 04 00 01 00 00 00 96 00 00 00 96 00 00 00 00 00 51 41 55 4E 49 4F 4E 05 5A 00 03 3C 78 00 14 63 87 28 D0 B7 9F 36 EF 86 7F 1C 52 91 03 FA 68 37 C5 47 DF 36 F0 51 1E 5F 3E A0 C3 8F DA 49 CB 70 64 25 3D C1 B8 B8 C9 BA BA 58 19 86 0A 0E 26 36 F4 5A CC 3A B5 5A 50 35 86 29 F3 83 C6 4A 0A 06 FE 0B D2 D2 08 0C C3 81 56 D9 83 B6 32 BD E9 29 C4 A4 C2 32 D5 00 6F ED A2 EA 61 91 9D 79 2E 5C 39 C1 98 2A 3B 23 AD E7 D7 9E 0C A5 6A 8A AC BD 03 76 71 65 29 3B 2C 45 18 A0 4D 22 0B F5 0B 37 0B E1 0B DD 44 73 6E 88

42

UFOM SDK Developers Manual


packet3 <S> A0 80 04 00 02 00 00 00 96 00 00 00 96 00 00 00 00 00 52 E7 AD 48 28 72 70 42 F0 59 BE BE 37 11 B2 28 6D 38 3E 75 5D E4 3B D4 5E CF D4 93 FB 55 26 4B 35 3A BF 33 FB 28 D3 C4 80 81 E1 E1 D2 5B 02 F0 D2 93 17 3D D1 D3 E4 61 0A 98 51 D3 CD E0 D2 23 62 4B A0 9C 88 D8 85 40 E7 2C 4E B7 FE 5E 69 36 40 3D 63 29 C2 96 5F 59 80 EE 73 1B 20 23 D1 07 A8 4A FF A3 0D E3 AC 67 7A 09 89 DC 71 04 55 2A 60 67 29 07 15 18 D8 30 3F BA 63 8E 52 5E F5 EF DF F9 1D 3B D5 84 0F 2B DB 38 EE ED 30 41 4E 1B A5 4B 3E C0 19 01 70 4A <R> A0 06 04 00 02 00 00 00 96 00 00 00 00 00 00 00 00 00 42 00

packet4 <S> A0 80 04 00 03 00 00 00 64 00 00 00 64 00 00 00 00 00 EF 13 8C C2 60 9A 22 6F 26 5A B5 28 CC 3A BB ED 17 B6 D6 7E 1A AC FB 37 73 81 CB 6A 39 6E 7A 31 47 00 F1 83 1B E4 37 AF 7C FC 9B 5E BB 91 50 BE 8A A3 A5 A5 E5 78 D0 08 7D 26 9F 94 76 D0 68 72 EB 8C 97 28 5A AB 2C FF C1 7A E5 F9 E5 DA 1D F1 D3 07 74 A0 FA 3D 00 FD FD 75 DD 0C 3D 05 02 00 F6 12 97 63 E6 99 <R> A0 06 04 00 03 00 00 00 64 00 00 00 00 00 00 00 00 00 11 00

Ack Packet <R> 02 5C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5E 00

43

UFOM SDK Developers Manual


1.2 When dividing the extra data to be transmitted from Module to Host
Packet (1) Packet (2) Packet (n)

Packet (1) is the packet that includes Header Packet in 20byte and Command Packet. Packet (2) ~ Packet (n) are Ack Packets. The only purpose of Ack Packet is to transmit Header Packet.

Packet Header Packet structure is as follow;

Host -> Module Start : Command : Wparam : Param1 : Param2 : 0xA0 0x82, Ack(0x06) Ack(0x06) 0x0000 0x00000000 Length of data packet to be separated and sent Extra data length 0x14 in case of Packet 1; 0x00 in case of Ack 0x0000 codes Start ~ Sum of error codes 1; Sum of data packet in case of Packet 1; 0x00 in case of Ack 0xA0 0x82

<Host <- Module

Num of total data packet (n) NIndex of data packet (0 ~ N-1) data Length of data packet

Same as Param2

Error code Checksum Ext checksum

0x0000 codes Start ~ Sum of error codes

data packets Sum of data packets

In this case, at the time of Host sending Packet 1, checksum of Command Packet 20byte and ext checksum can be disregarded. Therefore, like 1.1, it simply sends the structure of Normal Protocol separately.

44

UFOM SDK Developers Manual


Normal

Host
Command

Module

Command Packet

Command Extended

Extra

Extra

Extra

Header Packet

Command

Command Header Packet (index Command Packet

Packet(1) Ack Packet Packet(2)

Header Packet (index

data(1) Divided extra data(1)

Ack Packet Packet(3) Ack Packet Packet(n) Header Packet (index Divided extra data(n) Header Packet (index extra Divided extra data(2)

Ex) Ex) When executing CMD_GET_MINUTIAE (0x40)

This is the case where the Host receives extra data divided into 150-byte blocks.

When the Command is executed, the extra data in 400 Byte is created. UFOM sends Ack packet about command packet to packet1, sends the divided block data packet in 150 Byte to packet2~packet3, and sends the other 100-byte block data packet to packet 4.

When there is no data to send like packet 5, Error code 0xFF.

45

UFOM SDK Developers Manual


packet1 <S> A0 82 00 00 00 00 00 00 96 00 00 00 14 00 00 00 00 00 CC 84 02 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <R> A0 82 04 00 00 00 00 00 14 00 00 00 14 00 00 00 00 00 4E 6E 02 40 00 00 00 00 00 00 00 00 00 00 90 01 00 00 00 00 D3 C8

packet2 <S> A0 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A6 00 <R> A0 82 04 00 01 00 00 00 96 00 00 00 96 00 00 00 00 00 53 EF 55 4E 49 4F 4E 05 5A 00 03 3C 5C 00 14 64 1B 1D F5 0F 82 62 34 C5 4C 20 60 9D DF B4 F3 9B 10 DF CF 0C 56 6E 47 B7 A0 4F E8 51 92 F1 A9 1B 70 97 72 9E FF 45 D2 0E 91 B9 00 B7 0D 90 3F 0E DD 23 CE A4 82 90 83 84 EC 67 23 CB 6E 5A 0E 57 64 34 6A 46 F9 E2 DF FF 05 48 6E F2 D1 39 62 11 CD F7 11 93 55 57 16 CB E9 9C 8F 4E C0 AC 02 8E CC BF AF C8 96 A2 7A EF FF 69 FB B1 5A 76 D8 34 A3 B2 B2 FC 91 CC 64 9E 97 14 17 25 2B E2 DD B4 54 54 48 3E E2 63 44 88

packet3 <S> A0 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A6 00 <R> A0 82 04 00 02 00 00 00 96 00 00 00 96 00 00 00 00 00 54 C7 C8 2D 9A E8 A1 23 61 02 8F F7 D4 32 05 A9 93 CF 76 24 0B A8 81 64 97 07 59 D5 E2 B1 9A 55 1E 68 D7 26 13 91 AE 6A F8 83 43 67 3F CC 89 42 1B C5 26 00 4C C2 AA D6 22 DC C6 6A 6F 0C B7 78 64 0F 30 E1 77 85 A5 0D F9 9A EA 21 54 EF 8D 69 C2 31 3B D1 54 EF 77 C4 6C 8C E8 39 F2 5A 00 09 F4 17 28 F5 E3 C3 DA 74 00 18 6D AB 6B 1A 63 30 81 D9 9F 63 D3 19 08 6A 51 BE 7F A9 D0 AE 61 9C 07 59 DD E2 60 6A F8 4F 35 DC D5 B9 ED 4D 00 4F 61 59 2E AF 98 6F 79 34

46

UFOM SDK Developers Manual


packet4 <S> A0 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A6 00 <R> A0 82 04 00 03 00 00 00 64 00 00 00 64 00 00 00 00 00 F1 12 DD 55 97 84 10 49 13 A0 61 0F 3C C9 7E 71 9A 1F 92 AD 17 99 E8 16 23 83 75 EE 16 04 F0 81 C9 6E 52 AF 58 D4 78 99 EB 5F 76 2F 8E CA 97 BB C6 06 2A F9 DA A4 57 7C E0 60 97 12 3D E7 87 EE 74 6C 77 78 83 AB 66 F9 7E A3 82 B9 22 A3 6A C6 9B D3 8E 44 36 21 D8 4D 2A 9F BC 0F 4E 12 A2 3E 09 7A 04 20 C0 A7

packet5 <S> A0 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A6 00 <R> A0 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 A5 00

47

UFOM SDK Developers Manual

(FAS02NLC 6 Switching to boot mode (FAS02NLC)


This function is to support from FAS02NL that is an integrated module. (FMonly) (FM-70FP supports E2 boot mode only)

There are two booting modes in FAS02NLC. It enables to identify if the booting mode is being performed in the boot area or in the main area. After connecting the module with the power source and serial port, set the existing Baud rate previously set in DvKiUtil, and then click Init Port. When the module is reset, data is displayed on the Tracer window. When resetting it with the module under normal operation, E2 is exported in the Command Packet. The following example shows the data available on the Tracer window when booted with E2. <R> 02 E2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E4 00 If the user fails to check Tracer, packet cannot be identified.

There are two pins in the name of SW1 at the backside of FAS02NLC. When the module is not operated normally or firmware is not upgraded due to exceptional problems, the user can do the same thing as mentioned above. After setting the Baud rate in DvKiUtil to 115200, and resetting the module in the same way as above with the part in the name of SW1 short-circuited, the following will be displayed on the Tracer window. <R> 02 E1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E3 00

Once the booting with E1 mode is recognized, it requires releasing the short circuit of two Pins in the SW1. In case of booting with E1 mode, all other functions dont work. It only supports the firmware upgrade function. After the firmware is upgraded and reset, it automatically boots with E2.

48

UFOM SDK Developers Manual

Appendix A. Protocol Reference


Communication between main controller and UFOM is performed using 20-byte packets. When the main controller or host sends a command, UFOM executes the command and returns ACK packet with setting the result to the packet. The packet structure is shown below. . Start 1Byte Command 1Byte wParam 2Byte Param1 4Byte Param2 4Byte exDatalen 4Byte ErrorCode 2Byte Checksum 1Byte Exchecksum 1Byte

Start

Designates the start of the packet ( 0x02)

Command

Designates the command to be executed. System ID - Command

WParam

If this parameter is 0, all commands are executed. If this parameter is larger than 0, the command is executed only when this parameter value is the same as the system ID. - Ack : Returns the current system ID.

Param1

Used when there is a parameter in the command.

Param2

Used when there is extra data to be used other than Param1. Used when there is extra data to be transmitted other than Param1 and Param2. This field does not carry data but only carries the data length. UFOM sets the result of executing the command requested by host or main

ExDatalen

ErrorCode

controller to this field. When the command is successfully executed, it returns M2ERROR_NONE (0x00). ErrorCode field is used only for ACK packet. Checksum field is used to detect communication errors, which is set as the

Checksum

remnant of dividing the sum of byte values of the packet (Start ~ ErrorCode, 18 bytes) by 256.

exChecksum

exChecksum field is used to detect communication errors, which is set as the remnant of dividing the sum of byte values of the extra packet by 256.

49

UFOM SDK Developers Manual


CMD_GET_VERSION (0x05)

This command is used to get the current protocol version. ACK packet is returned with major version in Param1 and minor version in Param2. Error code is always M2ERROR_NONE.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0x02 0x05

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum M2ERROR_NONE Version Major Number Version Minor Number 0x02 0x05

50

UFOM SDK Developers Manual


(0x06) CMD_IS_ROOT_MASTER (0x06)

This command is used to check whether there is a root master registered to the system. When a master has been registered, UFOM returns M2ERROR_NONE.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum 0 0x02 0x06

exCheckSum

ACK: Start Command wParam Param1 Param2 ExDatalen 0 0x02 0x06

ErrorCode

M2ERROR_NONE There is a root master registered. M2ERROR_MASTERFP_NOT_FOUND There is no root master registered.

CheckSum exCheckSum

51

UFOM SDK Developers Manual


CMD_GET_SYSTEM_ID CMD_GET_SYSTEM_ID (0x0e)

This command is used to get the current system ID. UFOM returns ACK packet with setting the current system ID to Param1. Error code is always M2ERROR_NONE.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0x02 0x0e

ACK: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum M2ERROR_NONE Being executed normally system id 0x02 0x0e

exCheckSum

52

UFOM SDK Developers Manual


CMD_SET_SYSTEM_ID (0x0f)

This command is used to set a new system ID. System ID to be set is set to Param1 of the command packet.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 system id 0x02 0x0f

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum M2ERROR_NONE Being executed normally M2ERROR_INVALID_PARAM - When Param1 value is wrong System id 0x02 0x0f

exCheckSum

53

UFOM SDK Developers Manual


CMD_DEVICE_TEST (0x10)

This command is used to test if a hardware device is normally operating. Device number to be tested should be specified in Param1. Available device numbers are as follows:

0x00 - DEVICE_ALL 0x01 - DEVICE_SENSOR 0x02 - DEVICE_FLASHMEM

Test all devices. Test image sensor. Test flash memory.

If the error value for DEVICE_ALL is not M2ERROR_NONE, execute DEVICE_ SENSOR and DEVICE_FLAHMEM to get the corresponding device state.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 Device Number 0x02 0x10

ACK: Start Command wParam Param1 Param2 ExDatalen 0


M2ERROR_NONE The device is normally operating.

0x00 0x10

ErrorCode

M2ERROR_FLASH_OPEN There is an error in the flash memory. M2ERROR_SENSOR_OPEN There is an error in the image sensor.

CheckSum exCheckSum

54

UFOM SDK Developers Manual


CMD_DEVICE_R (0x11 CMD_DEVICE_RESET (0x11)

This Command is the reset instruction that releases the currently designated or selected function and returns to the original stand-by state.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0x00 0x11

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE Device is operating in a normal condition 0x00 0x10

55

UFOM SDK Developers Manual


CMD_OPTICLED_ONOFF (0x14)

This command is used to turn ON/OFF the optical unit LED.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum 0 0 On/Off(On 1, Off 0) 0x02 0x14

exCheckSum

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum 0 M2ERROR_NONE The command has been executed normally. 0x02 0x14

exCheckSum

56

UFOM SDK Developers Manual


CMD_AUTO_ONOFF (0x1a)

This command is used to activate Auto sensing function on the optical sensor.

Command: Start Command WParam 0x02 0x1a 0 0=Disable auto sensing 1= Enable auto sensing 0=do not save Param1 value to flash 1=save Param1 value to flash 0x0000 0x0000

Param1

Param2

ExDatalen ErrorCode CheckSum

exCheckSum

ACK: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum M2ERROR_NONE The command has been executed normally. 0 0x02 0x1a

exCheckSum

57

UFOM SDK Developers Manual


CMD_SET_SYSTEM_INFO (0x20) This command is used to set system options of UFOM. Set an item to be changed (Selector) to Param1 and the value for the item to Param2. To execute this command requires master authentication. In other words, this command should be executed after CMD_VERIFY_ MASTER is executed first. The changed values apply all as the initial settings when the system is reset. To save the changed values, CMD_SAVE_SYSTEM_INFO should be used. Following selectors are available: SI_USING_MASTER_AUTHENTICATION (0x00) This select is used to designate whether or not to use master authentication for registering or deleting a user. If the value of Param2 is 1, it means to use master authentication and if it is 0, it means not to use. When the system is delivered from factory, default is set to 0. SI_SAVE_LOGEVENT(0x01) If the value of Param2 is 1, log events are saved but if it is 0, they are not saved. When the system is delivered from factory, default is set to 1. SI_SECURITY_LEVEL(0x02) This selector is used to designate security level. Security levels are available from 1 to 9, and 9 is the highest level. The meaning of each selector value is given below: 0x01 - SLEVEL_LOWEST 0x02 - SLEVEL_LOWER 0x03 - SLEVEL_LOW 0x04 - SLEVEL_BELOW_NORMAL 0x05 - SLEVEL_NORMAL 0x06 - SLEVEL_ABOVE_NORMAL 0x07 - SLEVEL_HIGH 0x08 - SLEVEL_HIGHER 0x09 - SLEVEL_HIGHEST But, this security level is used only for verification and the security level for identification should be set separately using SI_SECURITY_LEVEL_IDENTIFY.

SI_COMM_SPEED(0x04) This selector is used to set the communication speed of the current communication channel. Upon receiving ACK for this command, UFOM can communicate at the changed communication speed. Supported communication speeds are as follows. Default is (FAS02NLC: 0x01 BAUD_115200, FM-30FP: 0x17 BAUD_19200) But, as the value changed with this command is not saved in flash memory, the default is restored when UFOM is reset.

58

UFOM SDK Developers Manual


0x0001 BAUD_115200 0x0003 BAUD_57600 0x0005 BAUD_38400 0x000B BAUD_19200 0x000F BAUD_14400 0x0017 BAUD_9600

SI_SECURITY_LEVEL_IDENTIFY(0x08) This selector is used to set the security level for identification. In general, the security level for identification should be managed to be higher than that for verification. The security level for identification can be set only within the range of 3~9, but lower security levels cannot be set. Default is 4

SI_WIEGAND_FORMAT(0x09) This selector is used to set Wiegand Protocol format. Supported formats are as follows. Default is WIEGAND_FMT_26BIT. 0x0000 WIEGAND_NOT_USED 0x012c WIEGAND_FORMAT_26BIT 0x012e WIEGAND_FORMAT_34BIT

SI_WIEGAND_SITECODE(0x0a) This selector is used to set the sitecode of Wiegand Protocol. If Wiegand format is WIEGAND_FORMAT_26BIT, an 8-bit sitecode is used and if it is

WIEGAND_FORMAT_34BIT, a 16-bit sitecode is used.

59

UFOM SDK Developers Manual


SI_LFD_LEVEL (0x1a) This selector is used to detect fake finger on fingerprint capturing - for use, 1 and for nonuse, 0. Default is set to 0

SI_ROTATE_ SI_ROTATE_CAPTURE (0x1b) ROTATE This command is for using 180 rotation image when capturing fingerprint image - for use, 1 and for nonuse, 0. Default is set to 0.

SI_ROTATE_ SI_ROTATE_MATCHING (0x1c) ROTATE This Command is used to select whether or not to authenticate when using the Command SI_ROTATE_CAPTURE (0x1b) that determines the use or non-use of the image rotated by 180 degrees when capturing the fingerprint. When using the Command SI_ROTATE_CAPTURE (0x1b), if the user applies Command SI_ROTATE_MATCHING (0x1c), it performs authentication regardless of the image being rotated to 180 degrees, whereas it doesnt perform authentication when not in use. 0 when not in use whereas 1 when in use. Default value is 0.

SI_AUTO SI_AUTO_ONOFF(0x1d) UT This is the same function as CMD_AUTO_ONOFF (0x1a) but it performs FLASH SAVE regardless of user option. This is the Command SI_AOUT_ONOFF (0x1d) that activates or deactivates the function of Auto Sensing of the fingerprint sensor. When using this Command, it performs FLASH SAVE and therefore it deactivates when not in use.

SI_COMM0_SPEED (0x1e) RS232 This Command is used to designate the communication speed of Comm0 channel. Saved in flash memory, it enables to communicate at the applied communication speed although UFOM is reset. (Note: It doesnt support FAS02NLC and FM-70FP)

SI_COMM1_SPEED (0x1f) RS485 This Command is used to designate the communication speed of Comm1 channel. Saved in flash memory, it enables to communicate at the applied communication speed although UFOM is reset. (Note: It doesnt support FAS02NLC and FM-70FP)

SI_COMM1_SPEED (0x20) RS232 This Command is used to designate the communication speed of Comm2 channel. Saved in flash memory, it enables to communicate at the applied communication speed although UFOM is reset. (Note: It doesnt support FAS02NLC and FM-70FP)

60

UFOM SDK Developers Manual


SI_SEND_CAPTURE_SUCCESS (0x21) This Command is used to display On and Off about the success or failure of image authentication at the time of fingerprint capturing. It applies the function of Command CMD_GET_SYSTEM_INFO(0x30) (SI_SEND_CAPTURE_SUCCESS (0x21)).

SI_FAST_MODE (0x22) This is the function that reduces the time in the registration of fingerprint. However, the rate of authentication drops when SI_FAST_MODE is used.

This Command is used to select CMD_FP_IDENTIFY(0x56) or CMD_GET_MINUTIAE(0x40) if the user performs fingerprint authentication when activating SI_ROTATE_MINUTIAE Auto Sensing. CMD_GET_MINUTIAE(0x40) is applied when 1 is selected, whereas CMD_FP_IDENTIFY(0x56) is applied when 0 is selected. Default is 0.

SI_LFD_WHITE_MODE (0x23) This option is used to determine whether or not to use the inspected part of fake fingerprint color changes. With regards to the module authentication speed, if you want to increase authentication speed, simply set it to OFF. If the security level is required to be increased, use it after setting to ON. Default is 1. only) (Note: It supports FAS02NLC only)

SI_CAPTURE_OLD_SIZE (0x24) This option is used to reduce the image of fingerprint at the time of registering fingerprint and then increase the registration speed. If this option is used, the speed of registration can be faster but the rate of authentication can worsen as much as the image is reduced. only) (Note: It supports FAS02NLC only)

SI_ROTATE_MINUTIAE (0x25 SI_ROTATE_MINUTIAE (0x25) This Command is used to select CMD_FP_IDENTIFY(0x56) or CMD_GET_MINUTIAE(0x40) when the user performs fingerprint authentication when activating auto sensing. CMD_GET_MINUTIAE(0x40) is applied when 1 is selected, whereas CMD_FP_IDENTIFY(0x56) is applied when 0 is selected. Default is 0.

61

UFOM SDK Developers Manual


Command: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum ACK: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Selected items It varies depending on the value to be changed and selected items 0 M2ERROR_NONE The command has been executed normally M2ERROR_INVALID_PARAM it has wrong Param1 value 0x02 0x20 Selected items It varies depending on the value to be changed and selected items 0 0x02 0x20

62

UFOM SDK Developers Manual


CMD_SET_COMM_SPEED (0x21 CMD_SET_COMM_SPEED (0x21)

This commend is used to set the speed of existed communication channel. After receiving ACK, the speed is changed. The supported communication speed is the same as SI_COMM_SPEED which is belong to

CMD_SET_SYSTEM_INFO. The default value is BAUD_19200

However this commend has the same function of SI_COMM_SPEED, the value of Param2 is 1, it save the value at the flash memory so that even thought UFOM is reset it has the same commend speed.

FMThe version of FM-20FP are more then 3.1, the default communication speed is 19200bps if it use the initialize s/w.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Communication speed (BAUD_1200 ~ BAUD_115200) 1 = save at the flash, 0 = dose not save at the flash 0 0 0x02 0x21

ACK: Start Command wParam Param1 Param2 ExDatalen Communication speed (BAUD_1200 ~ BAUD_115200) 0 0 M2ERROR_NONE The command has been executed normally M2ERROR_INVALID_PARAM it has wrong Param1 value 0x02 0x21

ErrorCode

CheckSum exCheckSum

63

UFOM SDK Developers Manual


CMD_SET_TIME (0x24)

This command is used to set time by adjusting the clock in UFOM. UFOM should send the size of TimeInfo by setting it to ExtraDat field, and then send time in the order of year, month, day, hour, minute and second. It returns ACK after receiving ExtraData from host.

UFOM time is not accurate and when UFOM is reset, the time is also reset. Therefore, when UFOM is reset, reset, the time should be set accordingly. Even when it is not reset, it is recommended to set correct time once in several days.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Sizeof(TimeInfo) 0x02 0x24

Subsequent data sequence is the same as TimeInfo. Year 2Byte Month 1Byte Day 1Byte Hour 1Byte Min 1Byte Sec 1Byte reserved 1Byte

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum 0 M2ERROR_NONE The command has been executed normally M2ERROR_TIME_ERROR Set to wrong time value 0x02 0x24

64

UFOM SDK Developers Manual


exCheckSum

65

UFOM SDK Developers Manual

(0x28 28) CMD_SET_CAPTURE_TIMEOUT (0x28)

This Command is for setting the timeout at the time UFOM captures the fingerprint. Timeout value set by this Command is equally applied to all the commands requiring fingerprint capture. Timeout value should be set to 3~25 seconds.

Command: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0x02 0x28 0 Timeout value (3~25) 0=do not save Param1 value to flash 1=save Param1 value to flash 0 0

ACK: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE The command has been executed normally. M2ERROR_INVALID_PARAM it has wrong Param1 value Timeout value 0x02 0x28

66

UFOM SDK Developers Manual


CMD_SET_CHECK_SIMILAR_FP_REGISTER (0x29 29) CMD_SET_CHECK_SIMILAR_FP_REGISTER (0x29)

This Command is used for determining the use or non-use of the analogous fingerprint of UFOM and setting the value of fingerprint level. Under this Command, it means non-use when 0 is set to Param1 whereas use when 1 is set to Param1. In case of Param2, the value between 5 and 9 can be used in designating the analogous fingerprint level. With level 5 or less, it can be judged as no analogous fingerprint, and therefore the user is prohibited to use at level 5 or less.

Command: Start Command WParam Param1 0x02 0x28 0 0= Not used 1= Used Value between 5~9 is designated 0 0

Param2 ExDatalen ErrorCode CheckSum exCheckSum

ACK: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum 0= Not used 1= Used Acknowledge the value designated between 5~9. 0 M2ERROR_NONE The command has been executed normally. M2ERROR_INVALID_PARAM it has wrong Param1 value 0x02 0x28

67

UFOM SDK Developers Manual


exCheckSum

68

UFOM SDK Developers Manual


CMD_GET_SYSTEM_INFO (0x30)

This command is used to get the current system settings of UFOM. Set an item (Selector) to get to Param1. Upon receiving this command, UFOM returns ACK packet with setting the current system setting for the item to Param2.

Selectors are the same as those of CMD_SET_SYSTEM_INFO.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum Item 0 0 0 0x02 0x30

exCheckSum

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum Selector Current setting corresponding to the selector 0 M2ERROR_NONE The command has been executed normally M2ERROR_INVALID_PARAM it has wrong Param1 value 0x02 0x30

exCheckSum

69

UFOM SDK Developers Manual


(0x38 38) CMD_DEVICE_PVERSION (0x38)

This Command is used for obtaining the information of the OEM module in use. It enables to obtain more information than CMD_GET_VERSION (0x05). CMD_GET_VERSION may obtain the information of F/W Major, Minor version only. When sending the Command Packet, UFOM transmits the following information in the ACK PACKET. - Param1 : Full version information of module firmware (In case of 0x00205217, it becomes 20.52.23)

- Param2 : Module Firmware Checksum 4 Byte. - ExData : Module Name (9 byte) + String on full version information of module firmware (8 byte). V20BU(FM-20FP), FAS02NL2(FAS02NL) Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x38 V30BU(FM-30FP), V70BU(FM-70FP), FAS02NLC(FAS02NLC),

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum The order of data to be sent thereafter is as follow; Full version information of module firmware Module firmware checksum 0x11 M2ERROR_NONE Being executed normally 0x02 0x38

70

UFOM SDK Developers Manual


Module name (9 byte) + String on full version information of module firmware (8 byte)

CMD_GET_MODULE_ID (0x3F 3F) CMD_GET_MODULE_ID (0x3F)

This Command is used for obtaining the ID of the OEM module in use. When sending the Command Packet, UFOM sends the following information in the ACK PACKET. - Param1 : MANUFACTURE ID of Module (0x00005543) - Param2 : Product ID of Module FM-20FP FM-30FP FM-70FP FAS02NL FAS02NLC 0x464D0002 0x464D0003 0x464D0007 0x46410002 0x46410003

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x3F

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum MANUFACTURE ID (0x00005543) Product ID 0 M2ERROR_NONE The command has been executed normally 0x02 0x3F

71

UFOM SDK Developers Manual


CMD_GET_MINUTIAE (0x40)

This Command is used to receive the fingerprint from the optical device and then extract the characteristics from such fingerprint. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0 0x02 0x40

ACK: Start Command wParam Param1 Param2 ExDatalen 0x190 ( = 400bytes) M2ERROR_NONE The command has been executed normally ErrorCode M2ERROR_TIMEOUT There is no fingerprint in the Fingerprint Input window, or fingerprint input is wrong, There is an error in the image sensor. CheckSum exCheckSum 0x02 0x40

Subsequent data sequence is as follows:

400-byte length fingerprint data

72

UFOM SDK Developers Manual


CMD_GET_IMAGE (0x43) This command is used to get the fingerprint image opened on the current Fingerprint Input window to main controller or host side. The main controller sets which image to get to Param1 field of the command packet. Values that can be set to Param1 are as follows: Normal image size VIEW_NORMAL(0x01) Half of normal image size VIEW_HALF(0x02) VIEW_QUARTER(0x04) Quarter of normal image size Amount of data to get depends on the selected image size. The main controller reads the size set to ExtraData (lwExtraData, hwExtraData) field of ACK packet from UFOM, and gets as large image as the UFOM selected size UFOM. U If the image is captured normally, UFOM sends ACK packet and then sends as large image as ExtraData to the main controller. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 Fingerprint image size (0x01, 0x02, 0x04) 0x02 0x43

ACK: Start Command wParam Param1 Param2 ExDatalen Data length to be sent M2ERROR_NONE The command has been executed normally. ErrorCode M2ERROR_TIMEOUT - There is no fingerprint in the Fingerprint Input window, or
fingerprint input is wrong

0x02 0x43

M2ERROR_INVALID_PARAM it has wrong Param1 value CheckSum exCheckSum Subsequent data sequence is as follows: Image data as long as ExtraData length

73

UFOM SDK Developers Manual


CMD_GET_TIME (0x44)

This command is used to get time information from the clock in UFOM. UFOM should send the size of TimeInfo by setting it to ExtraDat field, and then send time in the order of year, month, day, hour, minute and second.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x44

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Sizeof(TimeInfo) M2ERROR_NONE The command has been executed normally. 0x02 0x44

Subsequent data sequence is the same as TimeInfo. Year 2Byte Month 1Byte Day 1Byte Hour 1Byte Min 1Byte Sec 1Byte reserved 1Byte

74

UFOM SDK Developers Manual


CMD_GET_REC_COUNT (0x46)

This command is used to get the number of users registered to the system.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum 0 0 0x02 0x46

exCheckSum

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum 0 M2ERROR_NONE The command has been executed normally. Number of users registered to the system 0x02 0x46

exCheckSum

75

UFOM SDK Developers Manual


CMD_GET_MASTER_COUNT (0x47)

This command is used to get the number of masters registered to the system.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum 0 0 0x02 0x47

exCheckSum

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum 0 M2ERROR_NONE The command has been executed normally. Number of masters registered (0-5) 0x02 0x47

exCheckSum

76

UFOM SDK Developers Manual


CMD_G (0x48 48) CMD_GET_CAPTURE_TIMEOUT (0x48)

This commend is used to get the timeout when fingerprints are captured by UFOM.

Command: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum 0 0 0x02 0x48

exCheckSum

ACK: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum M2ERROR_NONE The command has been executed normally. Timeout value 0x02 0x48

exCheckSum

77

UFOM SDK Developers Manual


CMD_GET_CHECK_SIMILAR_FP_REGISTER (0x49 49) CMD_GET_CHECK_SIMILAR_FP_REGISTER (0x49)

This Command is used for finding out whether or not using the analogous fingerprint of UFOM. It is also used for obtaining the value of fingerprint level.

Command: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum 0 0 0x02 0x48

exCheckSum

ACK: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum M2ERROR_NONE The command has been executed normally. Use/Non-use Current set level value 0x02 0x48

exCheckSum

78

UFOM SDK Developers Manual


(0x4e 4e) CMD_GET_USER_FPREC_COUNT (0x4e)

This Command is used for obtaining the number of registered fingerprints of User ID from the database. When User ID is sent in the Command Packet Param1, UFOM sends the number of fingerprints in the ACK PACKET Param2. If Param2 is 0, it means that there is no registered fingerprint.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 User ID 0x02 0x4e

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum User ID Number of registered fingerprints 0 M2ERROR_NONE The command has been executed normally. 0x02 0x4e

79

UFOM SDK Developers Manual


(0x4F 4F) CMD_GET_FPREC_COUNT (0x4F)

This Command is used for obtaining the number of registered fingerprints from the database. When the Command Packet is sent, UFOM transmits the following information in the ACK PACKET. - Param1 : Number of fingerprints registered in the module - Param2 : Number of total fingerprints of module (Upper 16Byte), Number of fingerprints that can be registered additionally in the module (Lower 16Byte) Accordingly, (Param2 Upper 16 Byte) = Param1 + (Param2 Lower 16 Byte). Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x4F

ACK: Start Command wParam Param1 Number of fingerprints registered in the module Number of total fingerprints of module (Upper 16 Byte), Param2 Number of fingerprints that can be registered additionally in the module (Lower 16 Byte) ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE Being executed normally 0x02 0x4F

80

UFOM SDK Developers Manual


CMD_FP_REGISTER_START (0x50) In case of 2template : In case of 1template, please refer to appendix F. UFOM receives two inputs to register 1 FP(In case of 2 templates per 1 finger). This order used to start FP register. After place FP on sensor, it send the order with ID. It will notify user rigster start. UFOM will capture FP after getting this order. This order can not use by itself. It can complete FP register with proceding with following order In case of Input 0x1 into CMD_FP_VERIFY_MASTER Param1, it should be proceed only 1. So If It can use CMD_FP_REGISTER_START and CMD_FP_REGISTER_END it should input 0x2 CMD_FP_VERIFY_MASTER CMD_FP_REGISTER_START CMD_FP_REGISTER_END However, When it set up CMD_SET_SYSTEM_INFO without Master authentication, there is no need for CMD_FP_VERIFY_MASTER Processing Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum ACK: Start Command wParam Param1 Param2 ExDatalen 0 M2ERROR_NONE Normal Operation M2ERROR_TIMEOUT No FP on the sensor or wrong input of FP User ID 0x02 0x50 USER ID Low 2byte : 1 Master, 0 Normal User Upper 2byte : 1 1template, 2 - 2template 0 0 0x02 0x50

ErrorCode

CheckSum exCheckSum

81

UFOM SDK Developers Manual


CMD_FP_REGISTER_END (0x51) This is a command used at the time of fingerprint registration to get the second fingerprint input. Upon receiving this command, UFOM captures the second fingerprint and compares it with the one captured with CMD_FP_RESISTER_START to determine whether or not to register the fingerprint. At this time, the fingerprint should be removed and then put again between CMD_FP_REGISTER_START and

CMD_FP_REGISTER_END. If the user keeps putting his fingerprint on the Fingerprint Input window without taking it from the window, his fingerprint is not registered. This command cannot accomplish its function on its own, but should be accompanied by the following commands in due order to complete fingerprint registration. When 0x1 is set to CMD_FP_VERIFY_MASTER Param1, it conducts only once. Therefore, CMD_FP_ REGISTER _START and CMD_FP_ REGISTER _END can be used when 0x2 is imported without fail. CMD_FP_VERIFY_MASTER CMD_FP_REGISTER_START CMD_FP_REGISTER_END But, when master authentication is disabled with CMD_SET_SYSTEM_INFO, CMD_FP_VERIFY_MASTER is omitted. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum ACK: Start Command wParam Param1 Param2 ExDatalen 0 0x02 0x51 User ID 1 Master, 0 Ordinary User 0 0 0x02 0x51

82

UFOM SDK Developers Manual


M2ERROR_NONE The command has been executed normally M2ERROR_SIMILAR_FP_EXIST Analogous fingerprint is already registered. ErrorCode M2ERROR_TIMEOUT There is no fingerprint on the Fingerprint Input window, or fingerprint
input is wrong.

M2ERROR_REGISTER_FAILED Registration failed M2ERROR_FUNCTION_FAIL - Function Call Failed. CheckSum exCheckSum

83

UFOM SDK Developers Manual


CMD_FP_CHANGE_START (0x52) In case of 2template , it will be same as before: In case of 1template, please refer to appendix F This is a command to start changing the fingerprint of a registered user by capturing a fingerprint put on the current Fingerprint Input window. When 0x1 is set to CMD_FP_VERIFY_MASTER Param1, it conducts only once. Therefore,

CMD_FP_CHANGE_START and CMD_FP_CHANGE_END can be used when 0x2 is imported without fail. CMD_FP_VERIFY_MASTER CMD_FP_CHANGE_START CMD_FP_CHANGE_END But, when master authentication is disabled with CMD_SET_SYSTEM_INFO, CMD_ FP _VERIFY_MASTER is omitted. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 User ID 0x02 0x52

ACK: Start Command wParam Param1 Param2 ExDatalen 0 M2ERROR_NONE The command has been executed normally ErrorCode M2ERROR_TIMEOUT There is no fingerprint on the Fingerprint Input window, or
fingerprint input is wrong.

0x02 0x52

M2ERROR_DB_WRONG_USERID There is no user with the user ID to be changed. CheckSum exCheckSum

84

UFOM SDK Developers Manual


CMD_FP_CHANGE_END (0x53)

This is a command to complete changing the fingerprint by capturing the fingerprint put on the current Fingerprint Input window and then comparing it with the one captured with CMD_FP_CHANGE_START. The same as with CMD_FP_REGISTER_END, this process requires the user to take off his hand from the Fingerprint Input window and then put it back to the window between two fingerprint inputs. When 0x1 is set to CMD_FP_VERIFY_MASTER Param1, it conducts only once. Therefore, CMD_FP_CHANGE_START and CMD_FP_CHANGE_END can be used when 0x2 is imported without fail. CMD_FP_VERIFY_MASTER CMD_FP_CHANGE_START CMD_FP_CHANGE_END But, when master authentication is disabled with CMD_SET_SYSTEM_INFO, CMD_FP_VERIFY_MASTER is omitted. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 User ID 0x02 0x53

ACK: Start Command wParam Param1 Param2 ExDatalen 0 M2ERROR_NONE The command has been executed normally. M2ERROR_TIMEOUT There is no fingerprint on the Fingerprint Input window, or ErrorCode
fingerprint input is wrong.

0x02 0x53

M2ERROR_FPCHANGE_FAILED Function call failed M2ERROR_FLASH_WRITE_ERROR Failed to write on flash memory.

85

UFOM SDK Developers Manual


CheckSum exCheckSum

86

UFOM SDK Developers Manual


(0x54) CMD_FP_DELETE (0x54)

This is a command to delete a registered user. In order to delete a registered user from flash memory, the user should first be verified by master. Deleting the fingerprint of a user should be done in the following order: CMD_FP_VERIFY_MASTER CMD_FP_DELETE But, when master authentication is disabled with CMD_SET_SYSTEM_INFO, CMD_FP _VERIFY_MASTER can be omitted. Param2 of ACK tells whether the deleted user was a master or not.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 User ID 0x02 0x54

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum User ID Master Flag 0 M2ERROR_NONE The command has been executed normally. 0x02 0x54

87

UFOM SDK Developers Manual


(0x55) CMD_FP_VERIFY (0x55)

This is a command to verify a user. The system compares the fingerprint put on the current Fingerprint Input window with the one stored in database, and returns the result. Param2 of ACK tells whether the verified user was a master or not.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 User ID 0x02 0x55

ACK: Start Command wParam Param1 Param2 ExDatalen User ID Master Flag 0 M2ERROR_NONE The command has been executed normally. M2ERROR_TIMEOUT - There is no fingerprint on the Fingerprint Input window, or ErrorCode
fingerprint input is wrong.

0x02 0x55

M2ERROR_VERIFY_FAILED - The captured fingerprint is not matched with the registered


fingerprint.

M2ERROR_USER_NOT_FOUND Not registered user. CheckSum exCheckSum

88

UFOM SDK Developers Manual


CMD_FP_IDENTIFY (0x56)

This is a command to identify a user without a user ID by capturing the fingerprint put on the current Fingerprint Input window and comparing it with all fingerprints registered to database. The system returns the result. When the user is a registered user, the error code of ACK is M2ERROR_NONE. Param1 field of ACK contains the user ID, and Param2 field contains a value indicating whether the user is a master or not.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x56

ACK: Start Command wParam Param1 Param2 ExDatalen User ID Master Flag 0 M2ERROR_NONE The command has been executed normally. M2ERROR_TIMEOUT - There is no fingerprint on the Fingerprint Input window, or ErrorCode
fingerprint input is wrong.

0x02 0x56

M2ERROR_IDENTIFY_FAILED - There is no fingerprint in database, which is matched with


the one on the current Fingerprint Input window.

CheckSum exCheckSum

89

UFOM SDK Developers Manual


CMD_FP_VERIFY_MASTER (0x57) This is a command to verify a master. After having a master putting his fingerprint on the Fingerprint Input window, the system sends this command to UFOM, with setting how many commands this master verification will cover to Param1. 0 : Commands following this command are deemed to be verified by master. 1 : Only one command following this command is deemed to be verified by master. n : n commands following this command are deemed to be verified by master. In general, this command is used before the command that requires verification by master. It is useful for consecutively registering users or for getting data consecutively from UFOM flash memory to server, by setting 0 or a number larger than 1 to Param1. The number of commands deemed to be verified can be nullified or reset with CMD_ or FP_VERIFY_MASTER_END,CMD_FP_VERIFY_MASTER,CMD_DB_VERIFY_ MASTER,

CMD_DB_VERIFY_MASTER_END. When this command is executed successfully, Param1 of ACK contains the ID of the master who verified the command. Command: Start Command Wparam Param1 Param2 ExDatalen ErrorCode CheckSum ExCheckSum 0 0 0 - All the subsequent commands are verified. For a number larger than 1, as many subsequent commands as the number are deemed to be verified. 0x02 0x57

ACK: Start Command Wparam Param1 Param2 ExDatalen 0 M2ERROR_NONE The command has been executed normally. M2ERROR_TIMEOUT There is no fingerprint on the Fingerprint Input window, or the fingerprint input is wrong. M2ERROR_MASTERFP_NOT_FOUND No root master has been registered. M2ERROR_VERIFY_FAIL No master fingerprint User ID of the master who verified the command 0x02 0x57

ErrorCode

CheckSum exCheckSum

90

UFOM SDK Developers Manual


CMD_FP_VERIFY_MASTER_END (0x58)

This is a command to nullify the remaining number of commands for verification designated with CMD_FP_VERIFY_MASTER or CMD_DB_VERIFY_MASTER. For example, if this command is instructed when five commands have been verified with

CMD_FP_VERIFY_MASTER and there are three more commands to be verified, the deemed verification for the remaining commands is nullified. In other words, in order to execute a command that requires verification after this command, the command should be verified by master with CMD_FP_VERIFY_ MASTER.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x58

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE The command has been executed normally 0x02 0x58

91

UFOM SDK Developers Manual


CMD_FP_IDENTIFY_EX (0x59)

This command functions the same as CMD_FP_IDENTIFY does, except that it can specify the section to be identified so that it can get the desired result faster when identifying a fingerprint among certain IDs. If an user ID with the matching fingerprint is found within the specified section, Error Code field of ACK contains M2ERROR_NONE; Param1 contains the user ID; and Param2 contains a value that tells whether the identified user is a master or not.

command As this command retrieves fingerprint images only from the specified section, the matched fingerprint image may not be identified even though it exist in database, if a wrong section is designated.

Command: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Start ID of the section to be retrieved End ID of the section to be retrieved 0 0 0x02 0x59

ACK: Start Command WParam Param1 Param2 ExDatalen User ID Master Flag 0 M2ERROR_NONE The command has been executed normally. M2ERROR_TIMEOUT There is no fingerprint on the Fingerprint Input window, or fingerprint ErrorCode input is wrong. M2ERROR_IDENTIFY_FAILED There is no fingerprint in database of the specified section, which is matched with the one in the current Fingerprint Input window. CheckSum exCheckSum 0x02 0x59

92

UFOM SDK Developers Manual


CMD_FP_ADD (0x5b CMD_FP_ADD (0x5b)

CMD_FP_ADD performs the function of registering the fingerprint in the User ID. This is used to register N fingers of the user in one User ID although only one fingerprint is registered in the User ID. For example, at the time of fingerprint authentication, if the middle finger is registered using this function, when the user wants to enter with the middle finger or index finger although the registration is made for the index finger in the User ID, it enables to authenticate the fingerprints of both fingers.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 User ID 0x02 0x5b

ACK: Start Command wParam Param1 Param2 ExDatalen 0 M2ERROR_NONE Being executed normally M2ERROR_TIMEOUT When fingerprint is not in the fingerprint import window or fingerprint is wrongly imported M2ERROR_VERIFY_FAILED - Captured fingerprint doesnt correspond with the registered ErrorCode fingerprint M2ERROR_SIMILAR_FP_EXIST - Analogous fingerprint is registered when analogous fingerprint is used. M2ERROR_REGISTER_FAILED Two fingerprints are not in accord. M2ERROR_DB_NO_DATA There is no user with ID to be registered User ID 0x02 0x5b

93

UFOM SDK Developers Manual


CheckSum exCheckSum

94

UFOM SDK Developers Manual


CMD_FP_MIN_VERIFY (0x5c CMD_FP_MIN_VERIFY (0x5c) MIN_

This is a command to verify users fingerprint. After captured fingerprint and the fingerprint from ExData are compared, its result returns. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Size of Minutiae 0 0x02 0x55

ACK: Start Command wParam Param1 Param2 ExDatalen 0 M2ERROR_NONE The command has been executed normally. M2ERROR_TIMEOUT There is no fingerprint on the fingerprint input window, or fingerprint ErrorCode input is wrong. M2ERROR_VERIFY_FAILED There is no match between captured fingerprint and registered fingerprint. CheckSum exCheckSum 0x02 0x55

95

UFOM SDK Developers Manual


CMD_FP_CANCEL (0x5d CMD_FP_CANCEL (0x5d)

This commend is used for cancelling the command while fingerprint is registered or access a fingerprint at the fingerprint sensor. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0x02 0x5d

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE The command has been executed normally 0x02 0x5d

96

UFOM SDK Developers Manual


CMD_FP_ADD_START (0x5e) In case of 2template(Same as before) : In case of 1template, please refer to appendix F. This order used to add additional registered users FP It captures FP on the sensor now. . For changing users FP it should be proceed with following order , CMD_FP_VERIFY_MASTER CMD_FP_ADD_START CMD_FP_ADD_END However, when it set up Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum ACK: Start Command wParam Param1 Param2 ExDatalen 0x0000 M2ERROR_NONE Nomal Operation ErrorCode M2ERROR_TIMEOUT There is no FP on sensor or wrong FP input\ M2ERROR_DB_NO_DATA There is no User ID to change M2ERROR_FPCOUNT_EXCEED The number of FP to register is full CheckSum exCheckSum 0x00 0x5e 0x0000 0x0000 User ID 0x00 0x5e CMD_SET_SYSTEM_INFO without Master authentication, there is no need for

CMD_FP_VERIFY_MASTER processing

97

UFOM SDK Developers Manual


CMD_FP_ADD_END (0x5f)

This is a command to complete adding the fingerprint of a registered user by capturing the fingerprint put on the current Fingerprint Input window and comparing it with the one captured with

CMD_FP_ADD_START. The same as with CMD_FP_REGISTER_END, this process requires the user to take off his hand from the Fingerprint Input window and then put it back to the window between two fingerprint inputs. Adding the fingerprint of a user should be done in the following order: CMD_FP_VERIFY_MASTER CMD_FP_ADD_START CMD_FP_ADD_END But, when master authentication is disabled with CMD_SET_SYSTEM_INFO, CMD_FP _VERIFY_MASTER is omitted. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0x0000 0x0000 User ID 0x00 0x5f

ACK: Start Command wParam Param1 Param2 ExDatalen 0 0x00 0x5f

98

UFOM SDK Developers Manual


M2ERROR_NONE The command has been executed normally M2ERROR_TIMEOUT There is no fingerprint on the Fingerprint Input window, or fingerprint
input is wrong.

ErrorCode

M2ERROR_FUNCTION_FAIL Fingerprint registration failed M2ERROR_FLASH_WRITE_ERROR Failed to write on flash memory M2ERROR_SIMILAR_FP_EXIST - Analogous fingerprint is registered when analogous fingerprint is used.

CheckSum exCheckSum

99

UFOM SDK Developers Manual


CMD_IS_REGISTERED_USER (0x60)

This is a command to see whether a user has been registered or not. With Param2 of ACK, you can also tell whether the user is a master or not.

Command: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 User ID 0x02 0x60

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum User ID Master Flag 0 M2ERROR_NONE Registered user M2ERROR_DB_WRONG_USERID Not registered user 0x02 0x60

100

UFOM SDK Developers Manual


CMD_GET_PW CMD_GET_PW (0x6c)

This is a command to get the password of a user. With Param2 of ACK, you can tell whether the user is a master or not.

Command: Start Command Wparam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 User ID 0x02 0x6c

ACK: Start Command WParam Param1 Param2 ExDatalen User ID Master Flag Sizeof password M2ERROR_NONE User with a registered password ErrorCode M2ERROR_USER_NOT_FOUND - ID imported by the user is not registered. M2ERROR_DB_WRONG_USERID - User without a registered password CheckSum exCheckSum 0x02 0x6c

101

UFOM SDK Developers Manual


CMD_PW_VERIFY (0x6d)

This is a command to verify the password of a user. With Param2 of ACK, you can tell whether the user is a master or not.

Command: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 Sizeof password User ID 0x02 0x6d

ACK: Start Command wParam Param1 Param2 ExDatalen User ID Master Flag 0 M2ERROR_NONE The command has been executed normally. ErrorCode M2ERROR_VERIFY_FAILED Password verification failed. M2ERROR_DB_WRONG_USERID Not registered user M2ERROR_USER_NOT_FOUND - ID imported by the user is not registered. CheckSum exCheckSum 0x02 0x6d

102

UFOM SDK Developers Manual


CMD_PW_ADD (0x6e)

This is a command to add the password of a user. With Param2 of the command packet, you can designate whether the user is a master or an ordinary user.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum User ID w (lower 2 bytes) = 1 Master, 0 Ordinary User hw (higher 2 bytes) = Overwrite flag Sizeof password 0 0x02 0x6e

ACK: Start Command wParam Param1 Param2 ExDatalen User ID 1 Master, 0 Ordinary User 0 M2ERROR_NONE The command has been executed normally M2ERROR_ALREADY_REGISTERED_USER When hw is 0, it means that the user has ErrorCode
already been registered.

0x02 0x6e

M2ERROR_DB_FULL There is no space in database to add any more user M2ERROR_MASTER_COUNT_EXCEED Maximum master count is exceeded (applied only
when the user is registered as a master).

CheckSum exCheckSum

103

UFOM SDK Developers Manual


CMD_PW_DELETE (0x6f)

This is a command to delete the password of a user. With Param2 of ACK, you can tell whether the user of the deleted password was a master or not.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 User ID 0x02 0x6f

ACK: Start Command wParam Param1 Param2 ExDatalen User ID Master Flag 0 M2ERROR_NONE The command has been executed normally ErrorCode M2ERROR_USER_NOT_FOUND - ID imported by the user is not registered. M2ERROR_DB_WRONG_USERID Not registered user CheckSum exCheckSum 0x02 0x6f

104

UFOM SDK Developers Manual


CMD_DB_GET_RECCOUNT (0x70)

This is a command to get the number of users registered to database. It functions the same as CMD_GET_RECCOUNT.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x70

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE The command has been executed normally. Number of registered users 0x02 0x70

105

UFOM SDK Developers Manual


CMD_DB_ADD_REC (0x71) In case of 2template (same as before) : In case of 1template, please refer to appendix F. This order used to register additional user from the server of UFOM database When it register user if there is the existed ID, it can give the option that the existed ID can delete and overwrite to Param1 If this value is not 0 with same ID in UFOM, UFOM is error value. So it could delete the existed ID without returning M2ERROR_ALREADY_REGISTERED_USER. Command: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Here is following the data order - USER with 1 FP : TUserRecord(56Byte) + TFPRecord(803Byte) - USER with 2 FPs : TUserRecord(56Byte) + TFPRecord(803Byte) + TFPRecord(803Byte) ACK: Start Command wParam Param1 Param2 ExDatalen 0 M2ERROR_NONE Nomal Operation M2ERROR_REGESTER_FAILED Registration failure M2ERROR_FLASH_OPEN Flash memory Error ErrorCode M2ERROR_INSUFFICIENT_DATACan not receive sufficient data in ExtraData M2ERROR_ALREADY_REGISTERED_USER Already registered user M2ERROR_DB_FULL There is no space to register user in database M2ERROR_MASTERCOUNT_EXCEED The number of master exceed CheckSum exCheckSum 0x02 0x71 Overwrite Flag ( 0 : If it has the existed ID, it does not overwrite, 1: If It has the existed ID, it delete the existed ID and overwrite) Storing 1 template per 1 FP 1, Storing 2 template per 1 FP 0 (same as before) 0x02 0x71

Sizeof(TUserRecord) + Sizeof(TFPRecord) * the number of registered FP 0

106

UFOM SDK Developers Manual


CMD_DB_DELETE_REC (0x72)

This is a command to delete a registered user from database. With Param2 of ACK, you can tell whether the deleted user was a master or not.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 User ID 0x02 0x72

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum User ID Master Flag 0 M2ERROR_NONE The command has been executed normally M2ERROR_DB_WRONG_USERID Not registered user 0x02 0x72

107

UFOM SDK Developers Manual


CMD_DB_GET_REC (0x73) Plesae refer to F for specific detail for chaning DB structure. This is Comman for retrieving user record from a database Sending user ID to Param1 from Command packet, UFOM will send ACK packet then continually transfer user and FP record. UFOM can store 10 FP per user ID. When a user ID has 10 FP and in order to get all FP record. Transfer 0 to Param 2 from Command Packet, Ack Packet ExDatalen is 32 + ((24+800*10) can be 8277. (if There is 2 templates per FP). However, to retrieve particular FP record, instead of transfer 0 to Param2 from Command Packet but transfer FP numer. Ack Packet Exdatalen will always be 32+((24+800)*1)) it can be 856

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Here is following order of data. - In case of 1 FP or Param 2 is not 0 : TUserRecord(56Byte) + TFPRecord(803Byte) - In case of n FP: TUserRecord(56Byte) + TFPRecord(803Byte) + TFPRecord(803Byte) + Sizeof(TUserRecord) + Sizeof(TFPRecord) *the number of M2ERROR_NONE nomarl operation M2ERROR_DB_WRONG_USERID Unregisted user M2ERROR_DB_NO_DATA In case of no FP data for FP number Registered FP 0x02 0x73 User ID FP Numer (1 ~ 10) or Total FP (0) 0 0 0x02 0x73

108

UFOM SDK Developers Manual


CMD_DB_GET_FIRSTREC (0x74) Please refer to appendix F about structure change. It brings first user record from database . UFOM continually send user record after sending ACK. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x74

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Sizeof(fdb_rec_user) + Sizeof(fdb_rec_fp) * the number of registered FP M2ERROR_NONE Normal operation M2ERROR_DB_WRONG_USERID There is no registered user in database 0x02 0x74

Here is following order of data - User with 1 FP: fdb_rec_user (32Byte) + fdb_rec_fp (24Byte) * template len - User with 2 FPs: fdb_rec_user(32Byte) + (fdb_rec_fp (24Byte) * template len)) + (fdb_rec_fp (24Byte) * template len)

ExtraData : It can be used if Error code of M2ERROR_NONE returns

109

UFOM SDK Developers Manual


CMD_DB_GET_NEXTREC (0x75) Please refer to appendix F about structure change. This order used to get next user record after proceeding with CMD_DB_GET_FIRSTREC or CMD_DB_GET_NEXTREC UFOM continually send user record after ACK, it can be used when it register normal user instead of master Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x75

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Sizeof(fdb_rec_user) + Sizeof(fdb_rec_fp) * the number of registered FP M2ERROR_NONE Normal operation M2ERROR_DB_WRONG_USERID there is no registrer user in database 0x02 0x75

Here is following order of data. - User with 1 FP: fdb_rec_user (32Byte) + fdb_rec_fp (24Byte) * template len - User with 2 FPs: fdb_rec_user (32Byte) + (fdb_rec_fp (24Byte) * template len)) + (fdb_rec_fp (24Byte) * template len)

ExtraData : - It can be used if Error code of M2ERROR_NONE returns.

110

UFOM SDK Developers Manual


CMD_DB_DELETE_ALL CMD_DB_DELETE_ALL (0x76)

This is a command used to delete all user data stored in database.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x76

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE The command has been executed normally 0x02 0x76

111

UFOM SDK Developers Manual


CMD_DB_GET_CURRENTREC (0x77) Please refer to appendix F about structure change. This command with CMD_DB_GET_FIRSTREC or CMD_DB_GET_NEXTREC used to bring back the final record again through two orders . UFOM continually send user record after sending ACK Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x77

ACK: Start Command wParam Param1 Param2 ExDatalen Sizeof(fdb_rec_user) + Sizeof(fdb_rec_fp) * the number of registered FP M2ERROR_NONE Normal operation ErrorCode M2ERROR_DB_WRONG_USERID There is no registered user in database M2ERROR_DB_NO_DATA There is no registered user in database CheckSum exCheckSum 0x02 0x77

Here is following order of data. - User with 1 FP: fdb_rec_user (32Byte) + fdb_rec_fp (24Byte) * template len - User with 2 FPs: fdb_rec_user (32Byte) + (fdb_rec_fp (24Byte) * template len)) + (fdb_rec_fp (24Byte) * template len)

ExtraData : - It can be used if Error code of M2ERROR_NONE returns.

112

UFOM SDK Developers Manual


CMD_DB_VERIFY (0x78)

This is a command to verify a user with fingerprint data. Upon receiving this command, UFOM compares the fingerprint sent from host with the one stored in database and then returns the result. This command functions almost the same as CMD_FP_VERIFY does, except that CMD_FP_VERIFY gets the fingerprint input through the Fingerprint Input window while CMD_DB_VERIFY gets it from host.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum ExCheckSum 0x0190(=400Byte) 0 User ID 0x02 0x78

Subsequent data sequence is as follows: Fingerprint data 400Byte

ACK: Start Command wParam Param1 Param2 ExDatalen 0 M2ERROR_NONE The command has been executed normally. M2ERROR_VERIFY_FAILED The received fingerprint is not matched with the registered ErrorCode
fingerprint

0x02 0x78

M2ERROR_DB_WRONG_USERID Not registered user M2ERROR_INSUFFICIENT_DATA Fingerprint data has not been sent normally. CheckSum exCheckSum

113

UFOM SDK Developers Manual


CMD_DB_IDENTIFY (0x79)

Upon receiving this command, UFOM compares fingerprint data without user ID with all fingerprint data registered to database and then returns the result. This command functions almost the same as CMD_FP_IDENTIFY does, except that CMD_FP_IDENTIFY gets the fingerprint input through the Fingerprint Input window while CMD_DB_IDENTIFY gets it from host. For the registered user, ErrorCode field of ACK contains M2ERROR_NONE; Param1 contains the user ID; and Param2 contains the value that tells whether the user is a master or not.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0x0190(=400Byte) 0 0x02 0x79

Subsequent data sequence is as follows: Fingerprint data 400Byte

ACK: Start Command wParam Param1 Param2 ExDatalen User ID Master Flag 0 M2ERROR_NONE The command has been executed normally. ErrorCode M2ERROR_IDENTIFY_FAIL There is no fingerprint data in database that is matched with the received one. M2ERROR_INSUFFICIENT_DATA Fingerprint data has not been sent normally. CheckSum exCheckSum 0x02 0x79

114

UFOM SDK Developers Manual


CMD_DB_IDENTIFY_EX (0x7a)

This command functions the same as CMD_DB_IDENTIFY does, except that it can get the desired result faster as it can designate a section to be identified.
When a user ID with the matching fingerprint is found within the designated section, ErrorCode field of ACK contains M2ERROR_NONE; Param1 field contains the user ID; and Param2 contains a value that tells whether the user is a master or not.

As this command retrieves fingerprint data only from the designated section, the matched section fingerprint may not be identified even though it exist in database, if a wrong section is designated.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Start ID of the section to be retrieved End ID of the section to be retrieved 0x0190(=400Byte) 0 0x02 0x7a

Subsequent data sequence is as follows: Fingerprint data 400Byte

ACK: Start Command WParam Param1 Param2 ExDatalen User ID Master Flag 0 M2ERROR_NONE The command has been executed normally. ErrorCode M2ERROR_IDENTIFY_FAIL There is no fingerprint in database of the specified section, which is matched with the one in the current Fingerprint Input window. M2ERROR_INSUFFICIENT_DATA Fingerprint data has not been sent normally. CheckSum ExCheckSum 0x02 0x7a

115

UFOM SDK Developers Manual


CMD_DB_VERIFY_MASTER (0x7b)

This is a command to verify a master using the given fingerprint data. This command functions almost the same as CMD_FP_VERIFY_MASTER does except that CMD_FP_ VERIFY_MASTER gets the fingerprint input through the Fingerprint Input window while CMD_DB_VERIFY_MASTER gets it from host. The same as CMD_FP_VERIFY_ MASTER, Param1 is set with a value that tells how many commands this master verification will cover. 0 : Commands following this command are deemed to be verified by master. 1 : Only one command following this command is deemed to be verified by master. n : n commands following this command are deemed to be verified by master. The number of commands deemed to be verified can be reset with CMD_FP_VERIFY_ MASTER as well as with CMD_FP_VERIFY_MASTER_END. For more details about this information, see CMD_FP_VERIFY_MASTER. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Subsequent data sequence is as follows: Fingerprint data 400Byte 0x0190(=400Byte) 0 0 All the subsequent commands are verified. For a number larger than 1, as many subsequent commands as the number are deemed to be verified. 0x02 0x7b

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE The command has been executed normally. M2ERROR_AUTHENTICATION_FAILED The given fingerprint data is not that of a master. M2ERROR_INSUFFICIENT_DATA Fingerprint data has not been sent normally User ID of the master who verified the command 0x02 0x7b

116

UFOM SDK Developers Manual


CMD_DB_VERIFY_MASTER_END CMD_DB_VERIFY_MASTER_END (0x7c)

This is a command to nullify the remaining number of commands for verification designated with CMD_DB_VERIFY_MASTER or CMD_FPB_VERIFY_MASTER. As it functions completely the same as CMD_FP_VERIFY_MASTER_END does, refer to the description of CMD_FP_VERIFY_MASTER_END. .Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x7c

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE The command has been executed normally 0x02 0x7c

117

UFOM SDK Developers Manual


CMD_DB_GET_ID_LIST (0x7d)

This is a command used to get only the user ID list from database. It is useful for getting only the user IDs fast. UFOM sends the user ID list immediately following ACK. It enables to designate the starting point where User ID is called in Param1 while the number of IDs designated by the user is called in Param2. The user ID list length is (total number of users * size of (user ID )).. (Total number User = Param2).

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum User ID starting number (1 ~ N) Number of User IDs designated 0 0 0x02 0x7d

ACK: Start Command wParam Param1 Param2 ExDatalen Total number of User * Sizeof(UserID) M2ERROR_NONE The command has been executed normally ErrorCode M2ERROR_DB_NO_DATA There is no registered user. M2ERROR_INVALID_PARAM Param value is wrongly imported CheckSum exCheckSum Total number of User 0x02 0x7d

Subsequent data sequence is as follows:

4Byte UserID

4Byte UserID

.. ..

4Byte UserID

4Byte UserID

ExtraData : - Valid only when the returned error code is M2ERROR_NONE.

118

UFOM SDK Developers Manual


CMD_DB_GET_MASTER_LIST (0x7e)

This is a command used to get only the master ID list from database. It is useful for getting only the master IDs fast. UFOM sends the master ID list immediately following ACK. The master ID list length is (total number of masters * size of (user ID )).

Command: Start Command Wparam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x7e

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Total number of Master * Sizeof(UserID) M2ERROR_NONE The command has been executed normally Total number of Master 0x02 0x7e

Subsequent data sequence is as follows:

4Byte UserID

.. ..

4Byte UserID

ExtraData : - - Valid only when the returned error code is M2ERROR_NONE.

119

UFOM SDK Developers Manual


CMD_DB_ADD_REC_EX (0x7f) In case of 2template (Same as before) : In case of 1template, please refer to appendix F Same as CMD_DB_ADD_REC(0x71), it is commend for registering additional user from server to current UFOM database. Although, CMD_DB_ADD_REC cannot register an additional FP record to an existing user ID. This commend is for enroll one or two FP record. The command packet of Param1 is 1. UFOM will delete all previous duplicate user(Record/FP) and send to exData for re-enrollment. But the Command packet of Param1 equal 0. UFOM will register FP additionally to a particular user ID. If ther is no duplicate user ID, then user record and FP record will be enrolled newly. Generally, UFOM can store 10 fp into a user ID. In order to transfer 10 FP record to a user, Command packet ExDatalen 56 + (803*10). It canbe 8086. If there are same user ID n UFOM, transfer param1 to 1. If not, Input 0 to param1 can be possible. If one additional FP record need to be register, transfer 0 to Param1 from Command Packet. ExDatalen 56+(803*1) can be 859 Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Here is following order of data - User with 1 FP : TUserRecord(56Byte) + TFPRecord(803Byte) - User with n FP : TUserRecord(56Byte) + TFPRecord(803Byte) + TFPRecord(803Byte) + ACK: Start Command wParam Param1 Param2 ExDatalen 0 0x02 0x7f Overwrite Flag ( 0 or 1) Storing 1 template per 1 FP 1, Storing 2 template per 2 FP 0 (Same as before) 0x02 0x7f

Sizeof(TUserRecord) + Sizeof(TFPRecord) * The number of the registered FP 0

120

UFOM SDK Developers Manual


M2ERROR_NONE Normal operation M2ERROR_INVALID_PARAM If User ID is 0xFFFFFFFF M2ERROR_DB_FULL There is no space to register more user in database ErrorCode M2ERROR_MASTERCOUNT_EXCEED M2ERROR_ALREADY_REGISTERED_USER Exceed the number of master user Already registered

M2ERROR_REGESTER_FAILED Matching failure of FP minutiae M2ERROR_FLASH_WRITE_ERROR Register failure in Flash memory M2ERROR_INSUFFICIENT_DATA It does not reach the data from ExtraData CheckSum exCheckSum

121

UFOM SDK Developers Manual

(0x80) CMD_LOG_GET_RECCOUNT (0x80)

This is a command to get the log record count stored in the system. With the result of this command, you can get all log records stored in the system using CMD_LOG_GET_REC.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x80

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE The command has been executed normally. Log data count stored in the system 0x02 0x80

122

UFOM SDK Developers Manual


CMD_LOG_GET_REC (0x81)

This is a command to get a log record. UFOM sends the log record immediately following ACK.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0~(logRecCount-1) Log record count 0x02 0x81

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Sizeof(TLogRecord) M2ERROR_DB_NO_DATA No log record 0x02 0x81

Subsequent data sequence is the same as TlogRecord (16 bytes).

123

UFOM SDK Developers Manual


CMD_LOG_DELETE_ALL (0x82)

This is a command to delete all log records.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x82

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 M2ERROR_NONE The command has been executed normally 0x02 0x82

124

UFOM SDK Developers Manual


CMD_LOG_GET_REC_EX (0x83 CMD_LOG_GET_REC_EX (0x83)

This Command is used to retrieve the log data. This has the same function as CMD_LOG_GET_REC(0x81), but differs in that it designages the range of log and gathers all the data belonging to such range of log. It is the function that retrieves the log data. It can be used after the range of log number is designated in Param1 and Param2.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0~(logRecCount-1) Number of log starting data 0~(logRecCount-1) Number of log ending data 0 0 0x02 0x83

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum Sizeof(TLogRecord) M2ERROR_NONE The command has been executed normally 0x02 0x83

125

UFOM SDK Developers Manual


exCheckSum

CMD_LOG_SET_REC(0x84 CMD_LOG_SET_REC(0x84) SET_REC(0x8 THIS COMMAND IS USED TO MANUALLY SAVE THE LOG INTO UFOM. For the structure of Log Data to be sent to exData, please refer to TLogRecord. In addition, it can be used for special applications such as mode out of log data structure, type, reason that log is recorded in the result area (3 Byte), etc. Data of the reserved area (1 Byte) is disregarded. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum exData Log Data 16Byte 0x10 0 0x02 0x84

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum M2ERROR_NONE The command has been executed normally M2ERROR_INSUFFICIENT_DATA - ExtraData is not sent normally. 0x02 0x84

126

UFOM SDK Developers Manual


exCheckSum

CMD_LOG_DELETE (0x85) CMD_LOG_DELETE (0x85

This Command is used to delete the log data designated in Param1.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 1~(logRecCount) Number of log selected 0x02 0x85

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum M2ERROR_NONE The command has been executed normally M2ERROR_INVALID_PARAM Param1 is wrongly imported. 0x02 0x83

127

UFOM SDK Developers Manual


CMD_GET_ACK_CHANNEL (0x86 CMD_GET_ACK_CHANNEL (0x86) GET_ACK_C

This Command is used to acknowledge the channel value to send the ACK packet when authenticating the fingerprint by Auto On and executing the command to GPIO Input ports according to the designated event. The designated value of channel should be called using CMD_SELECT_ACK_CHANNEL.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x86

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum M2ERROR_NONE The command has been executed normally 0x02 0x86

128

UFOM SDK Developers Manual


CMD_FP_CARD_MIN_VERIFY (0x87 87) CMD_FP_CARD_MIN_VERIFY (0x87) CARD_MIN_

This Command is used to receive the fingerprint data saved in the card and then perform user authentication. This enables to compare the fingerprint existing in the current fingerprint import window with that imported to ExData, and then return the result. Fingerprint data supports the ISO Standard Format and the unique format of the Company (UNION COMMUNITY). The Companys fingerprint data receives one or two data and then processes it. Fingerprint data size should be either 256 or 400 Byte. When the number of fingerprint data is two, the size of each fingerprint data should be equal. However, ISO Standard fingerprint data receives only one data and processes it. The size of ISO Standard fingerprint data is not fixed, but it should be 2048 Byte or less. User ID should be sent to Param1 for log recording. User should send the type of format to Param2 Upper 16bit (ISO Standard Format:1, Companys Format: 0) whereas the one fingerprint data size to Lower 16 bit. If the number of fingerprint data of the Companys format is 2, ExDatalen (Param2 Lower 16bit * 2) should be equal. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum User ID Upper 16bit (1:ISO Standard Format, 0:Companys Format) Lower 16bit (Size of each Minutiae) Size of ExData 0 0x02 0x87

The order of data to be sent thereafter is as follow; Fingerprint data as much as ExDatalen Byte

ACK: Start Command wParam Param1 Param2 ExDatalen 0 0x02 0x87

129

UFOM SDK Developers Manual


M2ERROR_NONE The command has been executed normally M2ERROR_INVALID_PARAM When wrong value is sent to Param2, ExDatalen ErrorCode M2ERROR_TIMEOUT - When fingerprint is not in the fingerprint import window or fingerprint is wrongly imported M2ERROR_VERIFY_FAILED - Captured fingerprint doesnt correspond with the registered fingerprint CheckSum exCheckSum

130

UFOM SDK Developers Manual


CMD_DEVICE_INITIALIZE (0x88 CMD_DEVICE_INITIALIZE (0x88)

This Command is used to initialize all the data saved such as set value of UFOM, user DB, log DB, etc.

Special care is required as UFOM is designed to execute the communication speed in 19200bps as default after this Command is executed.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0 0 0x02 0x88

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0 M2ERROR_NONE The command has been executed normally 0x02 0x88

131

UFOM SDK Developers Manual


CMD_SELECT_ACK_CHANNEL (0x89 CMD_SELECT_ACK_CHANNEL (0x89)

This command is for selecting a channel for sending Ack packet when getting authenticated by Auto On and executing a command by GPIO Input port event. If Param2 is 1, it is saved in flash memory.

Therefore, it sends Ack packet to the selected channel even after reset.

FM-20FP. 0, This command is used for FM-20FP. The channel 0, channel 2 is RS 232 port and channel 1 is RS 485 port

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Channel number (0 or 2) 1 = Save in flash memory, 0 = Dose not save at the flash memory 0 0 0x02 0x89

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Channel number (0 or 2) 0 0 M2ERROR_NONE The command has been executed normally 0x02 0x89

132

UFOM SDK Developers Manual


CMD_G (0x8a CMD_GET_SECTORDATA (0x8a)

This command is for receiving unprocessed data of user and fingerprint DB saved by UFOM in the Sector level as Ack packet. UFOMs flash memory is composed of 64KB sectors and it achieves 1 Sector data If UFOMs memory flash is 2MB and Sector number can be achieved from 8 UFOM sends ExData Max. 8KB at once so for

by repeating this command.

to 30 and if 4MB, it can be achieved from 8 to 62.

achieving all data saved by one Sector, Param2s offset should be set from 0 to 8192 and this command should be executed repeatedly. If offset value is larger than 57344, ExData is sent for (65536-offset).

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Sector number (8~) offset address (0~65535) 0 0 0x02 0x8a

ACK: Start Command wParam Param1 Param2 ExDatalen Sector number (8~) offset address (0~65535) 8192 or (65536-offset) M2ERROR_NONE The command has been executed normally ErrorCode M2ERROR_INVALID_USERDATA_ADDRESS Wrong setting of sector number or offset CheckSum exCheckSum Subsequent data sequence is the same as following. Data from offset in ACK Sector to ExDatalen 0x02 0x8a

133

UFOM SDK Developers Manual


CMD_SET_SECTORDATA (0x8b CMD_SET_SECTORDATA (0x8b)

This command is for saving a certain Sector data from CMD_GET_SECTORDATA again in the same Sector. UFOMs flash memory is composed of 64KB sectors and it achieves 1 Sector data by repeating this command.

If UFOMs memory flash is 2MB and Sector number can be achieved from 8 to 30 and if 4MB, it can be achieved from 8 to 62. UFOM sends ExData Max. 8KB at once and time out while transmitting is different for each communication speed. This below is Max ExData length for each BAUD communication speed.

Communication speed 115200 57600 38400 19200, 14400 9600

(BAUD)

Max ExDatas length 8192 4096 2048 1024 832

Therefore, in order to save data in one Sector, offset should be from 0 to 65535 in order and ExDatalen should not be more than the above and be sent repeatedly. 64KB for one Sector data is sent. UFOM is saved in flash memory when all

Sector number from CMD_GET_SECTORDATA should be assigned the same Sector number. If not, it may not work properly.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum ExCheckSum Sector number (8~) offset address (0~65535) Max 8192 0 0x02 0x8b

Subsequent data sequence is the same as following. Data content to be recorded as assigned length in ExDatalen

134

UFOM SDK Developers Manual


ACK: Start Command wParam Param1 Param2 ExDatalen Sector number (8~) Command packet (offset + ExDatalen) 0 M2ERROR_NONE The command has been executed normally ErrorCode M2ERROR_INVALID_USERDATA_ADDRESS Wrong Sector number or wrong offset M2ERROR_FUNCTION_FAIL When Command (offset + ExDatalen) is larger than 65536 or Command offset does not begin from 0 CheckSum exCheckSum 0x02 0x8b

135

UFOM SDK Developers Manual


CMD_GET_FP_CARD_MIN (0x8c 8c) CMD_GET_FP_CARD_MIN (0x8c) GET_FP_

This Command is used to import the fingerprint in the current fingerprint import window to save the fingerprint data in the card, and then extract the characteristics of such fingerprint. Fingerprint data obtained through this Command can be authenticated using CMD_FP_CARD_MIN_VERIFY Command. ACK packet fingerprint data supports the ISO Standard Format and the unique format of the Company (UNION COMMUNITY). In order to obtain the fingerprint data, it requires to send the type of Format (ISO Standard Format:1, Companys Format: 0) to the upper 16 bit of Param2, whereas the size of fingerprint data is sent to the lower 16 bit of Param2. Size of fingerprint data should be selected from either 500 or 600 in case of ISO Standard Format, whereas from either 256 or 400 in case of the Companys Format. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 Upper 16bit (1:ISO Standard Format, 0:Companys Format) Lower 16bit (Size of each Minutiae) 0x00 0x8c

ACK: Start Command wParam Param1 Param2 ExDatalen Size of Minutiae M2ERROR_NONE The command has been executed normally M2ERROR_INVALID_PARAM When wrong value is transmitted to Param1 M2ERROR_TIMEOUT When fingerprint is not in the fingerprint import window or fingerprint is ErrorCode wrongly imported M2ERROR_CONVERT_FPDATA_ENCRYPTION Failed in fingerprint data encryption M2ERROR_CONVERT_FPDATA_DECRYPTION Failed in fingerprint data decryption M2ERROR_CONVERT_FPDATA_CHECKSUM Fingerprint data checksum error Upper 16 bit (1:ISO Standard Format, 0:Companys Format) Lower 16bit (Size of Minutiae) 0x00 0x8c

M2ERROR_FUNCTION_FAIL - Function Call Failed CheckSum

136

UFOM SDK Developers Manual


exCheckSum The order of data to be sent thereafter is as follow; Fingerprint data as much as ExDatalen Byte

137

UFOM SDK Developers Manual


CMD_DB_GET_REC_USER_RECORD (0x8d) Please refer to appendix F about chaning DB structure This Command used to get User Record from Database Sending User ID in Param1, UFOM send 32Byte(User record) without FP record to ExData after sending ACK . Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 USER ID 0x02 0x8d

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Sizeof(fdb_rec_user) M2ERROR_NONE Normal Operation M2ERROR_DB_WRONG_USERID Unregisterd User 0x02 0x8d

Here is following order of data fdb_rec_user(32Byte)

138

UFOM SDK Developers Manual


CMD_DB_SET_REC_USER_RECORD (0x8e) Please refer to appendix F about chaning DB structure . This order used to update database after ediing user record Sending ExData as following Command Packet to update TUserRecord 32 byte, UFOM check registered User Id and send ACK after update. At this time, it can modify 51 byte without TuserRecords UserID and UserFlag

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Sizeof(fdb_rec_user) 0 0x02 0x8e

ACK: Start Command wParam Param1 Param2 ExDatalen 0 M2ERROR_NONE Normal Operation ErrorCode M2ERROR_DB_WRONG_USERID Unregistered User M2ERROR_REGISTER_FAILED Register failure CheckSum exCheckSum USER ID 0x02 0x8d

139

UFOM SDK Developers Manual


CMD_SET_USERDATA_LENGTH (0x90)

UFOM allocates a certain area of its memory for user data, and the host uses this area to store necessary data. This command is used to set the size of this area. As maximum 8160 bytes can be allocated for host to use, available size is between 0~8160. It is recommended to keep this area as small as possible so as to help UFOM work faster and longer. You can also use this command to completely remove the user data area.

Storing data that is much too frequently updated may adversely affect the life of UFOM.

Command: Start Command WParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0~8160 (User data area size to be used by host) 0x02 0x90

ACK: Start Command WParam Param1 Param2 ExDatalen 0 M2ERROR_NONE The command has been executed normally ErrorCode M2ERROR_INVALID_USERDATA_SIZE The designated user data area size exceeds 1024. CheckSum exCheckSum 0x02 0x90

140

UFOM SDK Developers Manual


CMD_GET_USERDATA_LENGTH (0x91)

This is a command to get the size of the user data area set with CMD_SET_ USERDATA_ LENGTH. If 0 is returned, it means that the user data area is not used.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0x91

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 User data area size being used by host (0~8160) 0x02 0x91

141

UFOM SDK Developers Manual


CMD_SET_USERDATA (0x92)

Once you set a user data area using CMD_SET_USERDATA_LENGTH, you can record user data on UFOM memory using this command. In order to record user data, set the address and length to record and send as ExtraData the data to be recorded. If the user data area size is 10, the user data area is filled with 0, the default of user data area. Recorded data content: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Later, if you want to change the data in Addresses 3 to 6 to 1, set 2 to Param1 and 4 to Param2, and send 1, 1, 1, 1 (4Bytes) as ExtraData.

Recorded data content: [0, 0, 1, 1, 1, 1, 0, 0, 0, 0 ] Later, if you want to change the data in Addresses 6 to 0 to 2, set 4 to Param1 and 6 to Param2, and send 2, 2, 2, 2, 2, 2 (6Bytes) as ExtraData. Recorded data content: [0, 0, 1, 1, 2, 2, 2, 2, 2, 2 ] In this way, you can change the values of the selected area with keeping the existing data. At this time, remember the index value set to Param1 starts with 0. Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum ExCheckSum 0~ (User data area size1) Data length to be recorded Data length to be recorded (the same as Param2) 0 0x02 0x92

Subsequent data sequence is as follows: Content of data to be recorded, as long as set to Param2

ACK: Start Command wParam Param1 Param2 ExDatalen 0x0000 0x0000 0x02 0x92

142

UFOM SDK Developers Manual


M2ERROR_NONE The command has been executed normally ErrorCode M2ERROR_MUST_BE_SET_DATA_LENGTH User data area size has not been set. M2ERROR_INVALID_USERDATA_ADDRESS Address to be recorded (value of Param1) is larger than the user data area size. CheckSum exCheckSum

143

UFOM SDK Developers Manual


CMD_GET_USERDATA CMD_GET_USERDATA (0x93) This command is used to get the user data recorded using CMD_SET_USERDATA. The same as CMD_SET_USERDATA, this command can get data of the desired length from the desired address. UFOM sends the user data immediately following ACK. See the following example. Assume that the user data area size is 10 and the user data is as follows: Recorded data content: [0, 0, 1, 1, 2, 2, 2, 2, 2, 2] To get the values from Addresses 4 to 6, set 3 to Param1 and 3 to Param2. ExtraData following ACK is as follows: Extra data content: [1, 2, 2] In this way, you can get the user data of the desired addresses selectively and thus can minimize the amount of data sent, to raise the speed. The same as CMD_SET_USERDATA, the index value set to Param1 starts with 0. Here, remember that, even if the value of Param2 is larger than the user data area size, data can be sent without an error. In this case, the entire data of the user data area is sent and the length of the data sent is notified with ACK. Therefore, when you get data, refer to the value set to Param2 of ACK.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum ACK: Start Command wParam Param1 Param2 ExDatalen Data address to be sent Data length to be received (may different from the value set to Param2 of Command) Data length to be received (the same as Param2) 0x02 0x93 0 ~ (User data area size 1) : Data address to be received Data length to be received Data length to be received (the same as Param2) 0 0x02 0x93

144

UFOM SDK Developers Manual


M2ERROR_NONE The command has been executed normally. M2ERROR_INSUFFICIENT_DATA ExtraData has not been sent normally. ErrorCode M2ERROR_MUST_BE_SET_DATA_LENGTH User data area size has not been set. M2ERROR_INVALID_USERDATA_ADDRESS Address to be recorded (value of Param1) is larger than the user data area size. CheckSum exCheckSum

Subsequent data sequence is as follows: Content of user data as long as set to Param2 of ACK

CMD_SET_GPIO_ (0x94 CMD_SET_GPIO_IN (0x94) GPIO

This is a command that Each GPIO Input port sets an event and depending on each ports level, assigned event can be performed. Event for each port will be assigned only once. The below is event type that

can be assigned. (Note: It doesnt support FAS02NLC and FM-70FP) doesn FM-70FP)

Event GPI_NO_ACTION GPI_ENROLL GPI_IDENTIFY GPI_DELETE GPI_DELETE_ALL GPI_CANCEL GPI_RESET_MODULE GPI_TEMPER_SW GPI_OUTPUT

Event number 0 1 2 3 4 5 6 7 8

Action No event CMD_FP_ENROLL command CMD_FP_IDENTIFY command CMD_FP_IDELETE command CMD_DB_DELETE_ALL command CMD_FP_CANCEL command CMD_DEVICE_RESET command CMD_SET_TEMPER command Only, GPO_INPUT1~ GPO_INPUT4 event may be executed.

The port level to be checked can be assigned as below. Level GPI_EVENT_ACTIVE_LOW Level number 0 Action Event is performed once when Active low level maintains assigned delay Event is performed once when Active high level maintains assigned delay Event is performed once for Falling edge level. Event is performed once for Rising edge level.

GPI_EVENT_ACTIVE_HIGH GPI_EVENT_FALLING_EDGE GPI_EVENT_RISING_EDGE

1 2 3

When using GPI_EVENT_ACTIVE_LOW or GPI_EVENT_ACTIVE_HIGH, delay time should be between 10

145

UFOM SDK Developers Manual


to 10000 ms..

Event structure to be assigned in Param2 is as below. (Unit: bit) 31~16 Delay time (10~10000) 15~8 Level number 7~0 Event number

146

UFOM SDK Developers Manual


ex) The value of Param2 is 0x00640102 if GPI_IDENTIFY and GPI_EVENT_ACTIVE_HIGH are set as 100ms on Input port1 FMThis command is for over FM-20FP V. 3.0. Each port event setting by this command is saved in reset. flash memory so it applies even after reset.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum GPIO Input port number (1~4) Event 0 0 0x02 0x94

ACK: Start Command wParam Param1 Param2 ExDatalen GPIO Input port number (1~4) Event 0 M2ERROR_NONE The command has been executed normally M2ERROR_INVALID_PARAM Wrong value sent to Param1 and ErrorCode Param2 0x02 0x94

CheckSum exCheckSum

147

UFOM SDK Developers Manual


CMD_GET_GPIO_ (0x95 CMD_GET_GPIO_IN (0x95) GPIO

This commend is used for importing the event from each of GPIO Input ports. Event structure for bringing Ack packet to Param 2 is the same as Param 2 by CMD_SET_GPIO_IN command. (Note: It doesnt support FAS02NLC and FM-70FP) doesn FM-70FP)

FMThis command is for over FM-20FP V. 3.0.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum GPIO Input port number (1~4) 0 0 0 0x02 0x95

ACK: Start Command wParam Param1 Param2 ExDatalen GPIO Input port number (1~4) Event 0 M2ERROR_NONE The command has been executed normally ErrorCode M2ERROR_INVALID_PARAM Wrong value sent to Param1 0x02 0x95

CheckSum exCheckSum

148

UFOM SDK Developers Manual

CMD_SET_GPIO_ (0x96 CMD_SET_GPIO_OUT (0x96) CMD_SET_GPIO_OCOUT(0x98) GPIO

Each GPIO Output port sets an event and when executing this event, this command is used for wave output depending on each assigned GPIO Output port. CMD_SET_GPIO_OUT is for GPIO Output port 1~4 and CMD_SET_GPIO_OCOUT is for GPIO Open Collector Output port 1~4. It is possible to set the several events on each ports and also possible to set the same event on several ports. It is possible to set the output as High(1) and Low(0) on Normal status on each ports. The value is set the upper 16 bit of Param 2. (Note: It doesnt support FAS02NLC and FM-70FP) doesn FM-70FP)

Here is the events that can be assigned as below. Event GPO_NO_ACTION GPO_ENROLL_WAIT_FING ER GPO_ENROLL_PROCESSIN G GPO_ENROLL_BAD_FINGE R GPO_ENROLL_SUCCESS GPO_ENROLL_FAIL GPO_VERIFY_WAIT_FINGE R GPO_VERIFY_PROCESSING Event number 0 1
No event is performed. Awaiting fingerprint input of CMD_FP_ENROLL Performing enrolling and processing captured fingerprint image of CMD_FP_ENROLL When not processing captured fingerprint image of CMD_FP_ENROLL or TimeOut CMD_FP_ENROLL is successful CMD_FP_ENROLL is failed Awaiting fingerprint input of CMD_FP_VERIFY Performing enrolling and processing captured fingerprint image of CMD_FP_VERIFY When not processing captured fingerprint image of CMD_FP_VERIFY or TimeOut CMD_FP_VERIFY is successful CMD_FP_VERIFY is failed Awaiting fingerprint input of CMD_FP_IDENTIFY Performing enrolling and processing captured fingerprint image of CMD_FP_IDENTIFY When not processing captured fingerprint image of CMD_FP_IDENTIFY or TimeOut

Action

3 4 5 6

GPO_VERIFY_BAD_FINGER GPO_VERIFY_SUCCESS GPO_VERIFY_FAIL GPO_IDENTIFY_WAIT_FIN GER GPO_IDENTIFY_PROCESSI NG GPO_IDENTIFY_BAD_FING ER

8 9 10 11

12

13

149

UFOM SDK Developers Manual


GPO_IDENTIFY_SUCCESS GPO_IDENTIFY_FAIL GPO_DELETE_WAIT_FING ER GPO_DELETE_PROCESSIN G GPO_DELETE_BAD_FINGE R GPO_DELETE_SUCCESS GPO_DELETE_FAIL GPO_DETECT_FINGER GPO_INPUT1 GPO_INPUT2 GPO_INPUT3 GPO_INPUT4 GPO_TEMPER_SWITCH_O N GPO_TEMPER_SWITCH_OF F 14 15 16
CMD_FP_IDENTIFY is successful CMD_FP_IDENTIFY is failed Awaiting fingerprint input of CMD_FP_IDELETE Performing enrolling and processing captured fingerprint image of CMD_FP_DELETE When not processing captured fingerprint image of CMD_FP_DELETE or TimeOut CMD_FP_IDELETE is successful CMD_FP_IDELETE is failed Performing CMD_FP_IDENTIFY by Auto On Performing GPIO Input port 1 event Performing GPIO Input port 2 event Performing GPIO Input port 3 event Performing GPIO Input port 4 event Performing CMD_SET_TEMPER S/W On

17

18 19 20 21 22 23 24 25 26

27

Performing CMD_SET_TEMPER S/W Off

In Param1, GPIO Output port number to be set is assigned and lower 16bit of Param2 decides whether to use or not for the assigned port. Here is the event structure for each port. Range start signal 0 or 1 Action If the value is 0, it process Delay then do High If the value is 1 it process Delay then do Low. After perform the event, it will decide the status of Port. idle state 0 or 1 If the value is 0, it will process the same output like Normal level, But if the value is 1 it will process the opposite output from Normal level. delay high low count 0~65535 0~65535 0~65535 0~65535 Maintains low status as delay ms that has been assigned in advance Maintains high status as assigned high ms Maintains low status as assigned low ms Repeats to perform high low state as assigned count and maintains idle state after finishing.

150

UFOM SDK Developers Manual


Ex) the below diagram is explaned that the output of Normal status is Low, start signal 0, idle state 0, delay 5ms, high 1ms, low 1ms, count 5.

Ex) the below diagram is explain that the output of Normal status is high and the first event is start signal 1, idle state 1, delay 0ms, high 1ms, low 1ms, count 2. And the second event is start signal signal 0, idle state 0, delay 2ms, high 1ms, low 1ms, count 3.

151

UFOM SDK Developers Manual


Here is the event structure of each port to be sent to ExData. (Unit: Byte) 0 event number 1 0 2 start signal 3 idle state 4~5 delay 6~7 high 8~9 low 10~11 count

If there are several events to be assigned, send each 12 Byte event as below. (Unit: Byte) 0~11 Event1 12~23 Event2 24~35 Event3

FMThis command is for over FM-20FP V. 3.0. Each port event setting by this command is saved in flash memory so it applies even after reset.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum GPIO Output port number (1~4) Upper 16bit (normal state level 1:high, 0:low) Lower 16bit (1: Use , 0: No use) (Event number * 12) 0 0x02 0x96 or 0x98

Subsequent data sequence is the same as below. Event data to be recorded as the assigned length in ExDatalen ACK: Start Command wParam Param1 Param2 ExDatalen GPIO Output port number (1~4) 0 0 M2ERROR_NONE The command has been executed normally ErrorCode M2ERROR_INVALID_PARAM Wrong value sent to Param1 and Param2 M2ERROR_INSUFFICIENT_DATA When ExDatalen is not 12Byte CheckSum exCheckSum 0x02 0x96 or 0x98

152

UFOM SDK Developers Manual


CMD_GET_GPIO_ (0x97 CMD_GET_GPIO_OUT (0x97) CMD_GET_GPIO_OCOUT(0x99) GPIO

This is a command for bringing assigned event in each GPIO Output port. CMD_GET_GPIO_OUT is for bringing assigned event in GPIO Output port 1~4 and

CMD_GET_GPIO_OCOUT CMD_GET_GPIO_OCOUT is for bringing assigned event in GPIO Open Collector Output port 1~4. The event structure for bringing ExData of Ack packet is same as CMD_SET_GPIO_OUT command one. doesn FM-70FP) (Note: It doesnt support FAS02NLC and FM-70FP)

FMThis command is for over FM-20FP V. 3.0.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum GPIO Output port number (1~4) 0 0 0 0x02 0x97 or 0x99

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum GPIO Output port number (1~4) Upper 16bit (normal state level 1:high, 0:low) Lower 16bit (1: Use , 0: No use) (Event number * 12) M2ERROR_NONE The command has been executed normally M2ERROR_INVALID_PARAM Wrong value sent to Param1 0x02 0x97 or 0x99

Subsequent data sequence is the same as below. Event data to be recorded as the assigned length in ExDatalen

153

UFOM SDK Developers Manual


CMD_INIT_ (0x9A CMD_INIT_GPIO (0x9A) INIT

This is a command for event initialization of all events of GPIO Input and Output ports. doesn FAS02NLC FM-70FP) (Note: It doesnt support FAS02NLC and FM-70FP)

FMThis command is for over FM-20FP V. 3.0. Each port event setting by this command is saved in flash memory so it applies even after reset.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0 0 0x02 0x9A

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0 M2ERROR_NONE The command has been executed normally 0x02 0x9A

154

UFOM SDK Developers Manual


CMD_FP_ (0x9B CMD_FP_ENROLL (0x9B) FP

This command is for combination of CMD_FP_REGISTER_START and CMD_FP_REGISTER_END. sending this command, it will capture a fingerprint twice and if successful, user can be enrolled.

When

If upper

16bit value is 1 in Param2, user ID is ignored in Param1 and unique user ID will be automatically created. It will enroll master or normal user depending on Lower 16 bit value. If this command is performed based on GPIO Input port Event, user ID will be automatically created and enrolled as a normal user.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum User ID upper 16bit (1:Automatic ID create), lower16bit(1: master, 0: normal user) 0 0 0x02 0x9B

ACK: Start Command wParam Param1 Param2 ExDatalen User ID 0 0 M2ERROR_NONE The command has been executed normally M2ERROR_TIMEOUT No fingerprint in fingerprint input window or wrong fingerprint input M2ERROR_SIMILAR_FP_EXIST Analogous fingerprint is registered ErrorCode M2ERROR_ALREADY_REGISTERED_USER Already registered user M2ERROR_DB_FULL No space for adding a new user in database M2ERROR_MASTER_COUNT_EXCEED Over max master (Only when enrolling masters) M2ERROR_REGISTER_FAILED Enrollment failed M2ERROR_FLASH_WRITE_ERROR Writing failed in flash memory CheckSum exCheckSum 0x02 0x9B

155

UFOM SDK Developers Manual


CMD_FP_ (0x9C CMD_FP_IDELETE (0x9C) FP

This command is for deleting the user after searching for fingerprint user registered with 1:N authentication as CMD_FP_IDENTIFY.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0 0 0x02 0x9C

ACK: Start Command wParam Param1 Param2 ExDatalen Deleted user ID 0 0 M2ERROR_NONE The command has been executed normally M2ERROR_TIMEOUT - No fingerprint in fingerprint input window or wrong ErrorCode fingerprint input M2ERROR_IDENTIFY_FAILED - No matching fingerprint data in database with the fingerprint on current fingerprint input window CheckSum exCheckSum 0x02 0x9C

156

UFOM SDK Developers Manual


CMD_SET_ (0x9D CMD_SET_TEMPER (0x9D) SET

This command is for recording Log data of On or Off in Temper switch. Log data user ID is recorded as 0, Mode for 6 and Type for 0. The result is recorded as EVT_TEMPER_SWITCH_ON(0x13) for Temper On and

EVT_TEMPER_SWITCH_OFF (0x14) for Temper Off. If this command is performed by GPIO Input port event, it is considered as Temper Off when each port is converted as opposite level.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 1:Temper s/w On, 0: Temper s/w Off 0 0 0 0x02 0x9D

ACK: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 1:Temper s/w On, 0: Temper s/w Off 0 0 M2ERROR_NONE The command has been executed normally 0x02 0x9D

157

UFOM SDK Developers Manual


CMD_FP_REGISTER_TEMP_START (0xA5) In UFOM, it can get 2 inputs to register 1 FP This order used to register FP and sending Template by ExData . Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum ACK: Start Command wParam Param1 Param2 ExDatalen M2ERROR_NONE Normal Operation M2ERROR_TIMEOUT There is no FP on the sensor. Or inputting wrong FP User ID Quality = In case of MAX(100) UNION Format 0x02 0xA5 User ID Upper : 1 -Template 1, 0-Template 2 Template Size 0 Lower : 1 Master, 0 Normal User 0x02 0xA5

ErrorCode

CheckSum exCheckSum

158

UFOM SDK Developers Manual


CMD_FP_REGISTER_TEMP_END (0xA6) This order used to input FP again When register FP It can send template by ExData , Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum ACK: Start Command wParam Param1 Param2 ExDatalen User ID In case of Quality = MAX(100) UNION Format 0 M2ERROR_NONE Normal Operation M2ERROR_SIMILAR_FP_EXIST It already registered same FP . ErrorCode M2ERROR_TIMEOUT There is no FP on the sensor. Or inputting wrong FP M2ERROR_REGISTER_FAILED Register failure M2ERROR_FUNCTION_FAIL Function call failure. CheckSum exCheckSum 0x02 0xA6 User ID Upper : 1 -Template 1 0-Template 2 Template Size 0 Lower : 1 Master, 0 Normal User 0x02 0xA6

159

UFOM SDK Developers Manual

CMD_FP_ADD_TEMP_START (0xA7) This order used to add FP of the registed user with template data by ExData. Here is changing users FP as following order . CMD_FP_VERIFY_MASTER CMD_FP_ADD_START CMD_FP_ADD_END However, In case of setting Not authenticated by CMD_SET_SYSTEM_INFO, there is no need for CMD_FP_VERIFY_MASTER processing Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum ACK: Start Command wParam Param1 Param2 ExDatalen 0x0000 M2ERROR_NONE Normal Operation ErrorCode M2ERROR_TIMEOUT There is no FP on the sensor or inputting wrong FP M2ERROR_DB_NO_DATA There is no USER to change M2ERROR_FPCOUNT_EXCEED The number of registed FP is full. CheckSum exCheckSum 0x00 0xA7 USER ID In case of Quality = MAX(100) UNION Format USER ID upper : 1 -Template 1 0-Template 2 Template Sze 0x0000 0x00 0xA7

160

UFOM SDK Developers Manual


CMD_FP_ADD_TEMP_END (0xA8) This order used to add additional fingerprint to the registed user. It will proceed this order if PARAM2 is Upper 1 in Send DATA of CMD_FP_ADD_TEMP_START This order used to send Template data by ExData for adding additional fingerprint to the registered user CMD_FP_VERIFY_MASTER CMD_FP_ADD_START CMD_FP_ADD_END However, In case of setting Not authenticated by CMD_SET_SYSTEM_INFO, there is no need for CMD_FP_VERIFY_MASTER processing

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum ACK: Start Command wParam Param1 Param2 ExDatalen USER ID In case of Quality = MAX(100) UNION Format 0 M2ERROR_NONE Normal Operation M2ERROR_TIMEOUT There is no FP on the sensor or inputting wrong FP ErrorCode M2ERROR_FUNCTION_FAIL Register failure M2ERROR_FLASH_WRITE_ERROR Writing Flash memory failure M2ERROR_SIMILAR_FP_EXIST When it uses same FP it already registered same FP , CheckSum exCheckSum 0x00 0xA8 USER ID Upper : 1 -Template 1 0-Template 2 Template Size 0x0000 Lower : 1 Master, 0 Normal user 0x00 0xA8

161

UFOM SDK Developers Manual


CMD_FP_VERIFY_TEMP (0xA9) This Order used to authenticate USER. It will return the result with comparing between all users FP in database and FP by current ExData. It can be found that Authenticated user is Master by Param2 of ACK

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Template Size 0 USER ID 0x02 0xA9

ACK: Start Command wParam Param1 Param2 ExDatalen USER ID Master Flag 0 M2ERROR_NONE Normal Operation ErrorCode M2ERROR_TIMEOUT - There is no FP on the sensor or inputting wrong FP M2ERROR_VERIFY_FAILED It does not match between captured FP and registered FP M2ERROR_USER_NOT_FOUND The unregisted User CheckSum exCheckSum 0x02 0xA9

162 162

UFOM SDK Developers Manual


CMD_FP_IDENTIFY_TEMP (0xAA) Without User ID, it will return the result with comparing between all users FP USER ID and FP by current ExData In case of the registered user, ACKs error code has USER ID in Param1 filed of M2ERROR_NONE ACK and has the value about weather Master or not in Param 2

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Template Size 0 0x02 0xAA

ACK: Start Command wParam Param1 Param2 ExDatalen USER ID Master Flag 0 M2ERROR_NONE Normal Operation ErrorCode M2ERROR_TIMEOUT - There is no FP on the sensor or inputting wrong FP M2ERROR_IDENTIFY_FAILED There is no matched FP in current inputted FP in database CheckSum exCheckSum 0x02 0xAA

163

UFOM SDK Developers Manual


CMD_FP_IDELETE_TEMP (0xAB) This order used to delete user by 1:N authentication such as CMD_FP_IDENTIFY_TEMP Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 Template Size 0 0x02 0xAB

ACK: Start Command wParam Param1 Param2 ExDatalen Deleted User ID 0 0 M2ERROR_NONE Normal Operation ErrorCode M2ERROR_TIMEOUT - There is no FP on the sensor or inputting wrong FP M2ERROR_IDENTIFY_FAILED - There is no matched FP in current inputted FP in database CheckSum exCheckSum 0x02 0xAB

164

UFOM SDK Developers Manual


CMD_GET_FP_MIN_SAVE (0xAC) Extract the template with capturing FP as a selected format Command: Start Command wParam Upper : Template size Param1 Lower : Format 0- union[Fixed] 1- ISO[Fixed]500 2 ISO[Fixed]600 3 ANSI378[Variable] 4 ISO[Variable] Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 0 0x02 0xAC

ACK: Start Command wParam Upper : Template size Param1 Lower : Format 0- union[Fixed] 1- ISO[Fixed]500 2 ISO[Fixed]600 3 ANSI378[Variable] 4 ISO[Variable] Param2 ExDatalen 0 Template size M2ERROR_NONE Normal Operation ErrorCode M2ERROR_TIMEOUT - There is no FP on the sensor or inputting wrong FP M2ERROR_IDENTIFY_FAILED - There is no matched FP in current inputted FP in database CheckSum exCheckSum 0x02 0xAC

165

UFOM SDK Developers Manual


CMD_GET_FP_USER_TEMP (0xAD) Extract the template in Database If Database has 2 templates, it will proceed one more time.

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum 0 User ID Sub ID 0x02 0xAD

ACK: Start Command wParam Param1 Param2 ExDatalen Template Count Offset Template size M2ERROR_NONE Normal Operation ErrorCode M2ERROR_TIMEOUT - There is no FP on the sensor or inputting wrong FP M2ERROR_IDENTIFY_FAILED - There is no matched FP in current inputted FP in database CheckSum exCheckSum 0x02 0xAD

166

UFOM SDK Developers Manual

CMD_DB_NEW_ADD_REC_EX (0xaf) Please refer to appendix F as DB structure change. This Command used to register additional user from current UFOM databases server suchcas CMD_DB_ADD_REC_EX(0x7f)

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Sizeof(fdb_rec_user) + Sizeof(fdb_rec_fp) * The number of the registered FP 0 0x02 0xAF

Here is following order of data - User with 1 FP : fdb_rec_user(32Byte) + fdb_rec_fp(16Byte)+(template size) - User with n FP : fdb_rec_user(32Byte) + fdb_rec_fp(16Byte)+(template size) + fdb_rec_fp(16Byte) + (template size)+

167

UFOM SDK Developers Manual


CMD_DB_NEW_ADD_REC (0xb0) PLEASE REFER TO APPENDIX F AS A DB STRUCTURE CHANGE. This Command used to register additional user from current UFOM databases server such as reCMD_DB_ADD_REC (0x71

Command: Start Command wParam Param1 Param2 ExDatalen ErrorCode CheckSum exCheckSum Sizeof(fdb_rec_user) + Sizeof(fdb_rec_fp) * The number of the registered FP 0 0x02 0x7f

Here is following order of data - User with 1 FP : fdb_rec_user(32Byte) + fdb_rec_fp(16Byte)+(template size) - User with 2 FPs: fdb_rec_user(32Byte) + fdb_rec_fp(16Byte)+(template size) + fdb_rec_fp(16Byte) + (template size)

168

UFOM SDK Developers Manual

B. Appendix B. Command Summary

B.1 Basic Command


Command
CMD_GET_VERSION (0x05) CMD_IS_ROOT_MASTER (0x06) CMD_GET_SYSTEM_ID (0x0e) CMD_SET_SYSTEM_ID (0x0f) CMD_DEVICE_TEST (0x10) CMD_DIVICE_RESET (0x11) CMD_OPTICLED_ONOFF (0x14) CMD_AUTO_ONOFF (0x1a) ACK: CMD_SET_SYSTEM_INF O (0x20) CMD_SET_COMM_SPEE D (0x21) ACK: Command: CMD_SET_TIME (0x24) ACK: 0=no save to flash CMD_SET_CAPTURE_TI MEOUT(0x28) ACK: CMD_SET_CHECK_SIMI LAR_FP_REGISTER 0 = Disable (0x29) ACK: 1 = Enable FP Level value (5~9) Command: 1 = Enable Timeout value 0 = Disable FP Level value (5~9) Command: Timeout value(3~25) 1=save to flash Size of TimeInfo Baud value Size of TimeInfo Command: ACK: Baud value Command: (BAUD 1200 ~ 115200) 1=save to flash 0=no save to flash Selector Value for selector Command: ACK: Command: ACK: Command: ACK: Command: ACK: Command: ACK: Command: ACK: Command: ACK: 0=no save to flash Command: Off=0, On=1 1=save to flash On-1, Off 0 System id System id System id Device number Major version Major version

Param1

Param2

ExDatalen

169

UFOM SDK Developers Manual


CMD_GET_SYSTEM_INF O (0x30) CMD_DEVICE_PVERSIO N (0x38) CMD_GET_MODULE_ID (0x3F) CMD_GET_MINUTIAE (0x40) CMD_GET_IMAGE (0x43) CMD_GET_TIME (0x44) ACK: CMD_GET_REC_COUNT (0x46) CMD_GET_MASTER_CO Master Count UNT (0x47) CMD_GET_CAPTURE_TI MEOUT(0x48) CMD_GET_SIMILAR_FP_ REGISTER (0x49) CMD_GET_USER_FPREC Number _COUNT (0x4e) ACK: Command: Number of total fingerprints of module CMD_GET_FPREC_COU Number NT(0x4F) ACK: registered in the module Number of fingerprints that can be registered additionally (Lower 16 Byte) 1 = MasterFlag CMD_FP_REGISTER_ST ART (0x50) ACK: CMD_FP_REGISTER_EN D (0x51) ACK: CMD_FP_CHANGE_STA Command: UserID Command: UserID 1 = MasterFlag UserID 0 = UserFlag Command: UserID 0 = UserFlag of fingerprints (Upper 16 Byte) User ID fingerprints of registered ACK: 0Max Master Count Command: ACK: Command: ACK: Command: On - 1 , Off - 0 User ID Current set level value Timeout value Command: ACK: Command: RecCount(0-MaxUser) Sizeof TimeInfo Command: ACK: Command: ACK: Command: ACK: Command: ACK: Command: ACK: Command: FP size Selector Image size Size of minutiae MANUFACTURE ID Product ID Full Version information Firmware Checksum Size of Module ID Item Item Current system setting

170

UFOM SDK Developers Manual


ACK: CMD_FP_CHANGE_END (0x53) Command: ACK: UserID

Command: CMD_FP_DELETE (0x54) ACK: Command: CMD_FP_VERIFY (0x55) ACK: CMD_FP_IDENTIFY (0x56) CMD_FP_VERIFY_MAST ER (0x57) ACK: CMD_FP_VERIFY_END (0x58) CMD_FP_IDENTIFY_EX (0x59) ACK: Command: CMD_FP_ADD (0x5b) ACK: CMD_FP_MIN_VERIFY (0x5c) CMD_FP_CANCEL (0x5d) CMD_GET_ACK_CHANN EL ACK: (0x86) Command: ACK: Command: ACK: Command: Command: ACK: Command: ACK: Command:

UserID UserID UserID UserID MasterFlag MasterFlag

UserID Number authentication MasterUserID of valid

MasterFlag

Retrieval Section Starting Command: ID UserID


UserID UserID

Retrieval Section Ending ID MasterFlag

Size of minutiae

ACK CHANNEL format,Size of

CMD_FP_CARD_MIN_VE RIFY (0x87)

Command: ACK:

UserID

Size of ExData each minutiae

(format),(Size of Command: CMD_GET_FP_CARD_MI N (0x8c) ACK: each minutiae) CMD_FP_ADD_START (0x5e) CMD_FP_ADD_END (0x5f) CMD_IS_REGISTERED_U Command: ACK: Command: ACK: Command: UserID UserID UserID each minutiae) (format),(Size of

171

UFOM SDK Developers Manual


ACK: Command: CMD_GET_PW (0x6c) ACK: Command: CMD_PW_VERIFY (0x6d) ACK: Command: CMD_PW_ADD (0x6e) ACK: Command: CMD_PW_DELETE(0x6f) ACK: CMD_DEVICE_INITIALIZ E (0x88) CMD_SELECT_ACK_CH ANNEL (0x89) CMD_FP_ENROLL (0x9b) ACK: CMD_FP_IDELETE (0x9c) CMD_SET_TEMPER (0x9d) Command: ACK: Command: On - 1 , Off - 0 ACK: On - 1 , Off - 0 Delete UserID UserID Command: ACK: Command: ACK: Command: Channel number Channel number UserID Auto ID, MasterFlag 1=save to flash UserID MasterFlag UserID UserID UserID UserID Overwrite Flag 1 = Master 0 = User MasterFlag MasterFlag, Sizeof password UserID UserID MasterFlag Sizeof password Sizeof password UserID UserID MasterFlag

172

UFOM SDK Developers Manual

B.2 Database Access Command


Command
Command: CMD_DB_GET_RECCOUNT (0x70) Number ACK: registered of users

Param1

Param2

ExDatalen

Size of TUserRecord
Command: CMD_DB_ADD_REC (0x71) Overwrite Flag

Size

of

TFPRecord

No.

of

fingerprints
ACK: CMD_DB_DELETE_REC (0x72) Command: ACK: Command: CMD_DB_GET_REC (0x73) ACK: UserID UserID UserID MasterFlag FP Number

Size of fdb_rec_user + Size of fdb_rec_fp + template len * No. of fingerprints


Command: CMD_DB_GET_FIRSTREC (0x74) ACK:

Size of fdb_rec_user + Size of fdb_rec_fp +temeplate len * fingerprint


Command:

CMD_DB_GET_NEXTREC

Size of fdb_rec_user
(0x75) CMD_DB_DELETE_ALL (0x76) ACK:

+ Size of fdb_rec_fp *fingerprint


Command: ACK:

Size of fdb_rec_user
CMD_DB_GET_CURRENTR EC (0x77) ACK: Command: CMD_DB_VERIFY (0x78) ACK: Command: CMD_DB_IDENTIFY (0x79) ACK: CMD_DB_IDENTIFY_EX (0x7a) CMD_DB_VERIFY_MASTER (0x7b) ACK: UserID Command: ACK: Command: authentication UserID Start UserID UserID Number of valid MasterFlag End UserID MasterFlag UserID Command:

+ Size of fdb_rec_fp +temeplate len * fingerprint

400Byte

400Byte

400Byte

400Byte

173

UFOM SDK Developers Manual


CMD_DB_VERIFY_MASTER _END (0x7c) CMD_DB_GET_ID_LIST Total (0x7d) ACK: users number of Command: ACK: Command:

Total number of users * 4byte

Command: CMD_DB_GET_MASTER_LI Total ST(0x7e) ACK: masters number of

Total number of masters * 4byte Size of TUserRecord

CMD_DB_ADD_REC_EX (0x7f)

Command:

Overwrite Flag

Size

of

TFPRecord

No.

of

fingerprints
ACK:

CMD_LOG_GET_RECCOUN T (0x80) CMD_LOG_GET_REC (0x81) CMD_LOG_DELETE_ALL (0x82) CMD_LOG_GET_REC_EX (0x83)

Command: ACK: Command: ACK: Command: ACK: Start number Command: data ACK: data End number Log count Log number

Size of TLog Record

Size of TLog Record


exData Data length Log Data 16Byte

CMD_LOG_SET_REC (0x84)

Command: ACK:

Number CMD_LOG_DELETE (0x85) ACK: CMD_DB_GET_REC_USER_ RECORD (0x8d) CMD_DB_SET_REC_USER_ RECORD (0x8e) Command: ACK: Command: ACK: UserID UserID Command: selected

of

log

Size of fdb_rec_user

174

UFOM SDK Developers Manual

Data B.3 User Data Access Command


Command
CMD_SET_USERDATA_LE NGTH (0x90) CMD_GET_USERDATA_LE NGTH (0x91) CMD_SET_USERDATA (0x92) CMD_GET_USERDATA (0x93) Command: ACK: Command: ACK: Command: ACK: Command: ACK: Address Address Length Length Length Length Data length Address Length Length

Param1
Data length

Param2

ExDatalen

B.4 B.4 DB Sector Access Command


Command
CMD_GET_SECTORDATA (0x8a) CMD_SET_SECTORDATA (0x8b) Command: ACK: Command: ACK:

Param1
Sector number Sector number Sector number Sector number

Param2
offset offset offset offset Length

ExDatalen

8192 or (65536-offset)

B.5 B.5 F/W Download Command


Command
CMD_DOWN_PROGRAM (0xf1)

Param1
(offset)

Param2
Length (Length )

ExDatalen

175

UFOM SDK Developers Manual

B.6 B.6 GPIO Command


Command
Command: CMD_SET_GPIO_IN (0x94) ACK: Command: CMD_GET_GPIO_IN (0x95) ACK: Command: CMD_SET_GPIO_OUT (0x96) ACK: Command: CMD_SET_GPIO_OCOUT (0x98) ACK: Command: CMD_GET_GPIO_OUT (0x97) ACK: Command: CMD_GET_GPIO_OCOUT Normal level, (0x99) ACK: Command: CMD_INIT_GPIO (0x9A) ACK: Port number Usage Length Port number Usage Port number Port number Port number Normal level, Length Port number Normal level, Port number Usage Length Port number Port number Usage Event Normal level, Length Port number Port number Event

Param1
Port number

Param2
Event

ExDatalen

176

UFOM SDK Developers Manual


Commands that require verification by master
CMD_SET_SYSTEM_INFO CMD_FP_REGISTER_START CMD_FP_REGISTER_END CMD_FP_CHANGE_START CMD_FP_CHANGE_END CMD_FP_ADD_START CMD_FP_ADD_END CMD_FP_DELETE CMD_FP_GET_RECCOUNT CMD_DB_ADD_REC CMD_DB_DELETE_REC CMD_DB_GET_REC CMD_DB_GET_FIRSTREC CMD_DB_GET_NEXTREC CMD_DB_GET_CURRENTREC CMD_DB_DELETE_ALL CMD_LOG_GET_RECCOUNT CMD_LOG_GET_REC CMD_LOG_GET_REC_EX CMD_LOG_SET_REC CMD_LOG_DELETE_ALL CMD_RECOVER_MASTER

177

UFOM SDK Developers Manual


Commands that use ExtraData field
CMD_SET_TIME CMD_GET_TIME CMD_GET_MINUTIAE CMD_GET_IMAGE CMD_FP_CARD_MIN_VERIFY CMD_GET_FP_CARD_MIN CMD_PW_ADD CMD_PW_DELETE CMD_DB_ADD_REC CMD_DB_GET_REC CMD_DB_GET_FIRSTREC CMD_DB_GET_NEXTREC CMD_DB_CURRENTREC CMD_SET_USERDATA CMD_GET_USERDATA CMD_LOG_GET_REC CMD_LOG_GET_MIN CMD_DB_VERIFY CMD_DB_IDENTIFY CMD_DB_IDENTIFY_EX CMD_DB_VERIFY_MASTER CMD_DB_GET_ID_LIST CMD_DB_GET_MASTER_LIST CMD_GET_PW CMD_GET_SECTORDATA CMD_SET_SECTORDATA CMD_SET_GPIO_OUT CMD_GET_GPIO_OUT CMD_SET_GPIO_OCOUT CMD_GET_GPIO_OCOUT CMD_DOWN_PROGRAM

178

UFOM SDK Developers Manual

Appendix C. Data type


// Type define #define UINT32 #define UINT16 #define UINT8 unsigned int unsigned short unsigned char

// Command packet typedef struct tagCmdPacket { UINT8 UINT8 UINT16 UINT32 UINT32 UINT32 UINT16 UINT8 UINT8 } TCmdPacket; Channel; Command; wParam; Param1; Param2; exDatalen; ErrorCode; Checksum; exChecksum;

// Time structure typedef struct tagTimeInfo { UINT16 Year; UINT16 UINT16 UINT16 UINT16 UINT16 } TimeInfo; Month; Day; Hour; Min; Sec; // 1999~ // 1 ~ 12 // 1 ~ 31 // 00 - 23 // 0 - 59 // 0 59

179

UFOM SDK Developers Manual


// User Record typedef struct { UINT32 UINT8 UINT8 UINT8 Struct Struct UINT8 UINT8 }TUserRecord; UserId; UserFlag; SLevel; Reserved[2]; systime acctime regTime; accTime; tagTUserRecord

pwd[8]; cardnum[20];

* User Flag : 1-byte length field indicating the master or not, and the method of verification (Master using fingerprint: 0xC1, User using fingerprint: 0x41) 7 Bit Master 6 Bit Identifiable 3 Bit Use of Card 2 Bit Use of Password 0 Bit Use of Fingerprint

// Fingerprint Record typedef { UINT8 UINT16 UINT8 UINT8 } TFPRecord; type; len; // 0x01 // Fingerprint data length (800) packed struct tagTFPRecord

Minutiae1[400]; Minutiae2[400];

// Log Record typedef struct tagLogRecord { TimeInfo UINT16 UINT16 Time; UserId; EventNum;

} TLogRecord;

180

UFOM SDK Developers Manual

Appendix D. Constant
Event list
#define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define EVT_ADD_USER EVT_DEL_USER EVT_VERIFY_USER EVT_VERIFY_FAIL EVT_IDENTIFY_USER EVT_IDENTIFY_FAIL EVT_CHANGE_USER_FP EVT_DB_ADD_USER EVT_DB_DEL_USER EVT_DB_DEL_ALL EVT_DB_VERIFY_USER EVT_DB_VERIFY_FAIL EVT_DB_IDENTIFY_USER EVT_DB_IDENTIFY_FAIL EVT_ADD_FP EVT_ADD_PW EVT_DEL_PW EVT_TEMPER_SWITCH_ON EVT_TEMPER_SWITCH_OFF 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x10 0x11 0x12 0x13 0x14

Security level
#define SLEVEL_LOWEST #define SLEVEL_LOWER #define SLEVEL_LOW #define SLEVEL_BELOW_NORMAL #define SLEVEL_NORMAL #define SLEVEL_ABOVE_NORMAL #define SLEVEL_HIGH #define SLEVEL_HIGHER #define SLEVEL_HIGHEST 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09

ImageView
#define VIEW_NORMAL #define VIEW_HALF #define VIEW_QUARTER 0x01 0x02 0x04

181

UFOM SDK Developers Manual


Device number
#define DEVICE_ALL #define DEVICE_SENSOR #define DEVICE_FLASHMEN 0x00 0x01 0x02

System setup parameter


#define SI_USING_MASTER_AUTHENTICATION #define SI_SAVE_LOGEVENT #define SI_SECURITY_LEVEL #define SI_USING_RELAY #define SI_COMM_SPEED #define SI_SECURITY_LEVEL_IDENTIFY #define SI_WIEGAND_FORMAT #define SI_WIEGAND_SITECODE #define SI_USING_CHECKSUM #define SI_HIGH_SECURITY #define SI_ADAPTIVE_CAPTURE #define SI_LFD_LEVEL #define SI_ROTATE_CAPTURE #define SI_ROTATE_MATCHING #define SI_AUTO_ONOFF #define SI_COMM0_SPEED (FM-30FP function) #define SI_COMM1_SPEED (FM-30FP function) #define SI_COMM2_SPEED (FM-30FP function) #define SI_SEND_CAPTURE_SUCCESS #define SI_FAST_MODE #define SI_LFD_WHITE_MODE (FAS02NLC function) function) #define SI_CAPTURE_OLD_SIZE (FAS02NLC function) function) #define SI_ROTATE_MINUTIAE 0x00 0x01 0x02 0x03 0x04 0x08 0x09 0x0a 0x10 0x11 0x12 0x1a 0x1b 0x1c 0x1d 0x1E 0x1F 0x20 0x21 0x22 0x23 0x24 0x25

Wiegand Protocol Format


#define WIEGAND_FMT_NOT_USED #define WIEGAND_FMT_26BIT #define WIEGAND_FMT_34BIT 0x00 0x12c (300) 0x12e (302)

182

UFOM SDK Developers Manual

Appendix E. Error Code List


M2ERROR_NONE(0x00)

The command received from main controller or host has been executed without an error. The command received from main controller or host, which

M2ERROR_FLASH_OPEN(0x01)

requires accessing flash memory, has not been executed due to an error in flash memory.

M2ERROR_SENSOR_OPEN(0x02) M2ERROR_REGISTER_FAILED(0x03) M2ERROR_VERIFY_FAILED(0x04) M2ERROR_ALREADY_REGISTERED_USER M2ERROR_ALREADY_REGISTERED_USER (0x05) M2ERROR_USER_NOT_FOUND(0x06) M2ERROR_INVALID_PASSWORD(0x07) M2ERROR_TIMEOUT(0x08) M2ERROR_DB_FULL(0x09)

There is an error in the optical unit. Fingerprint registration failed. Verification failed. Registered user ID

User ID entered for verification has not been registered to UFOM database. Invalid password User fingerprint was not captured within the specified time. UFOM database is full, so that there is no more space to register. User ID to be deleted or verified was found to be not registered to database There is no data in database. Failed to extract minutiae from the captured image. Memory allocation failed. Impossible to communicate with main controller or host via serial port. The function has not been implemented. Failed to call the function. As much data as set to ExtraData has not been received. Failed to write on flash memory. Failed to read from flash memory. Invalid parameter of packet Master fingerprint is not found. This error occurs when it

M2ERROR_DB_WRONG_USERID(0x0A) M2ERROR_DB_NO_DATA(0x0B) M2ERROR_DB_NO_DATA(0x0B) M2ERROR_EXTRACT_FAIL(0x0C) M2ERROR_MEMALLOC_FAILED(0x0D) M2ERROR_SERIAL_OPEN(0x0E) M2ERROR_NOT_IMPLEMENTED(0x0F) M2ERROR_FUNCTION_FAIL(0x10) M2ERROR_INSUFFICIENT_DATA(0x11) M2ERROR_FLASH_WRITE_ERROR(0x12) M2ERROR_FLASH_WRITE_ERROR(0x12) M2ERROR_FLASH_READ_ERROR(0x13) M2ERROR_INVALID_PARAM(0x14)

M2ERROR_MASTERFP_NOT_FOUND(0x15)

is tried to execute a command without registering a master. Master count is exceeded. Maximum 5 masters can be

M2ERROR_MASTERCOUNT_EXCEED(0x16)

registered as of now. This error occurs when it is tried to register more masters than the allowable master count.

M2ERROR_AUTHENTICATION_FAIL(0x17)

Master authentication failed.

183

UFOM SDK Developers Manual


M2ERROR_FPCHANGE_FAILED (0x1A) M2ERROR_IDENTIFY_FAILED (0x1B) M2ERROR_FLASH_ERASE_ERROR(0x1C)

User fingerprint change failed. There is no fingerprint in database that is matched with the one on the current Fingerprint Input window. Failed to erase flash memory. Fingerprint data to be verified is the same as the one

M2ERROR_VERIFY_FAKE (0x1D)

verified just before. This error occurs when a user tries to verify or register fingerprints consecutively without taking off his hand.

M2ERROR_TIME_ERROR (0x1E)

This error occurs when a user tries to set time an with incorrect value. UFOM sends ACK containing this error once in identifying

M2ERROR_SEARCHING_FOR_IDENTIFY (0x1F)

every 100 users (as it may take too long to search). Precisely speaking, this is not an error. Upon receiving ACK containing this error, host ACK. should wait for the next

M2ERROR_INVALID_USERDATA_SIZE (0x20) M2ERROR_INVALID_USERDATA_ADDRESS (0x21) M2ERROR_MUST_BE_SET_DATA_LENGTH (0x22) (0x28 0x28) M2ERROR_CHECKSUM_ERROR (0x28) M2ERROR_SIMILAR_FP_EXIST (0x2A) M2ERROR_CONVERT_FPDATA_ENCRYPTIO M2ERROR_CONVERT_FPDATA_ENCRYPTIO N (0x30) M2ERROR_CONVERT_FPDATA_DECRYPTIO N (0x31) M2ERROR_CONVERT_FPDATA_CHECKSUM (0x32) M2ERROR_CONVERT_FPDATA_NOEXTEND (0x33) M2ERROR_CONVERT_FPDATA_OTHERTYPE (0x34) M2ERROR_FPCOUNT_EXCEED (0x80) M2ERROR_UNKNOWN_COMMAND(0xFF)

The size of data to be recorded exceeds the user area when the user tries to write the value in the user area for the host. The size of data to be recorded exceeds the user area when the user tries to write the value in the user area for the host.

Size of the user data area for host has not been set.

Checksum error of the received packet Analogous fingerprint is registered when analogous fingerprint is used. Failed to encrypt fingerprint data

Failed to decrypt fingerprint data

Failed to checksum fingerprint data

When the ISO standard format fingerprint data is used, it can not be processed due to lack of data. When the ISO standard format fingerprint data is used, it can not be processed because the data is not our standard, it is prepared by other company. Number of fingerprints that can be registered is full. UFOM FAILS TO ACKNOWLEDGE THE COMMAND.

184

UFOM SDK Developers Manual

Appendix F. NEW DB Data Type And 1Template


The previous method is that capture 2 times per 1 FP and storing 2templates in Database. However, it can capture just 1 time per 1FP and store 1 template in Databse. It can be decided whether storing 1template or 2templates by Option Order Param2 as follows. However FAR could be higher when it use 1template. When it use FAS02NLC with 1 template, it can be stored 1,000 users. When it use FAS02NLC with 2 templates, it can be stored 500 users

Command for register, add, change CMD_FP_REGISTER_START (0x50) CMD_FP_CHANGE_START(0x52) CMD_FP_ADD_START(0x5E)

Ex) CMD_FP_REGISTER_START (In case of 1Template) In case of Upper is 1, it registers 1 template after by CMD_FP_REGISTER_START (0x50). It is not use CMD_FP_REGISTER_END (0x51) When register Master Lower | | Upper

S> 02 50 00 00 01 00 00 00 01 00 01 00 00 00 00 00 00 00 55 00 Lower (2byte)= Master or General User, Upper (2byte) = 1template or 2template // Type define #define UINT32 #define UINT16 #define UINT8 unsigned int unsigned short unsigned char

Struct fdb_marker{ UINT16 UINT16 }; // Time structure struct systime { UINT16 UINT8 UINT8 UINT8 year; month; date; hour; mark; sor;

185

UFOM SDK Developers Manual


UINT8 UINT8 UINT8 }; struct fdb_rec_user { struct fdb_marker marker; int len; USER_ID uid; UINT8 UINT8 UINT8 UINT8 cntfp; flag; slevel; tempcnt; regtime; min; sec; rsvd;

struct systime }; struct fdb_rec_fp { UINT16 UINT8 UINT8 USER_ID uid; UINT16 UINT16 UINT8 UINT8 UINT8 UINT8* UINT8* };

char pwd[MAX_PW_SIZE];

sor; count; order; len1; len2; uflag; adapt; rsvd[2]; min1; min2;

186

Das könnte Ihnen auch gefallen