P25 Development Guide Blue Bamboo P25 Development Guide Firmware version: 1.0.58 (or higher) Document version: V 3.4.1 Document date: 2011-09-22 Products: P25 / P25-M / P25i / P25i-M www.bluebamboo.
P25 Development Guide Headquarters Blue Bamboo Transaction Systems (Shanghai) Co., Ltd. 6 Floor, Huishan Technology Park, No. 3333 Changning Road, Shanghai, P.R. China 200336 Tel: +86 21 5219 0333 Fax:+86 21 5219 0603 www.bluebamboo.com Copyright © 2011 BLUE BAMBOO All rights reserved.
P25 Development Guide Table of Contents 1 Introduction ................................................................................................................................... 5 1.1 Purpose .......................................................................................................................... 5 1.2 Scope ............................................................................................................................. 5 2 ESC commands.................................
P25 Development Guide 4.1 Java for Blackberry.............................................................................................................. 60 4.2 Java for Motorola................................................................................................................. 60 4.3 Windows Mobile 5.x and 6.x ............................................................................................... 61 4.4 Windows CE 4.2...................................................................
P25 Development Guide 1 Introduction 1.1 Purpose This document is a guide for the basic application development of the P25 Printer product family. 1.2 Scope This document consists of the communication options and software protocols for communication with the P25. This document is intended for use by engineers who will develop applications based on the P25 printer. This document does not provide detailed hardware and software specifications for the P25.
P25 Development Guide 2 ESC commands Support command list: Customers can click page number directly to view detail command information.
P25 Development Guide 2.1 Print Commands The P25 printer supports the following commands for printing characters and feeding paper: Command LF, CR Print and feed line ESC J Print and feed paper ESC d Print and feed n lines LF [Name] Print and line feed [Format] ASCII LF HEX 0A Decimal 10 [Description] Print the data in the print buffer and feed one line based on the current line spacing. [Note] Set the print position to the beginning of the line.
P25 Development Guide ESC J [Name] Print and feed paper [Format] ASCII ESC J n HEX 1B 4A n Decimal 27 74 n [Range] 0 ≤ n ≤ 255 [Description] Print the data in the print buffer and feed paper [n x (vertical or horizontal motion unit)] inches. ESC d [Name] Print and feed n lines [Format] ASCII ESC d n HEX 1B 64 n Decimal 27 100 n [Range] 0 ≤ n ≤ 255 [Description] Print the data in the print buffer and feed n lines.
P25 Development Guide GS k d1...dn [Name] Print bar code(one dimension) [Format] ASCII GS k m n d1 … dn HEX 1D 6B m n d1 … dn Decimal 29 107 m n d1 … dn [Range] 0 ≤ m ≤ 4 , m = 0x49 if m=2 then n=0x0d (ean-13) if m=3 then n=0x08 (ean-8) if m=0 then n=0x0c (upc-a) if m=1 then n=0x08 (upc-e) if m=0x49 then n variable (code128) (since version 1.0.
P25 Development Guide 2.2 Line Space Commands The P25 printer supports the following commands for setting line space. These commands can only be used for specifying line space, not actually feeding paper. The line space set through these commands affects the results of LF and ESC d and paper feeding by using FEED.
P25 Development Guide 2.
P25 Development Guide ESC R [Name] Select an international character set. [Format] ASCII HEX 52 n Decimal 82 n [Range] 0 , 30,65 [Description] Select an international character set n from the following table. n(hex) Character set 0 (ISO/IEC 8859-15)Latin Character (include English, France, Germany, Spain…) 30 Simplified Chinese 65 UTF8(Since P25 Version S1.0.41) [Default] n=0 www.bluebamboo.
P25 Development Guide ESC ! [Name] Select print mode. [Format] ASCII ESC ! HEX 1B 21 n Decimal 27 33 n n [Range] 0 ≤ n ≤ 255 [Description] Select print mode(s) using n as follows. Bit Off/On Value Function 0 Select 32 dot char/per line) eg. 1B 21 00 font (24 -- 1 Select 24 dot char/per line) eg.
P25 Development Guide 5. GS ! can also select character size. However, the setting of the last received command is effective. 6 This command should be placed previous than any normal printing characters in a line.
P25 Development Guide GS ! [Name] Select character size [Format] ASCII GS ! n HEX 1D 21 n Decimal 29 33 n [Range] 0 ≤ n ≤ 255 [Description] Select the character height using bits 0 to 3, and select the character width using bits 4 to 7, as follows; Bit7-Bit4(Hex) Character width Bit3-Bit0(Hex) Character height 0 1(normal height) 0 1(normal width) 1 2(double height) 1 2(double width) 2 3 2 3 3 4 3 4 4 5 4 5 5 6 5 6 6 7 6 7 7 8 7 8 [Note] 1 This command
P25 Development Guide [Note] 1 Only the lowest bit of n is valid. 2 This command is available for built-in and user-defined characters. 3 When white/black reverse printing mode is on, it also applies to character space set by ESC SP. 4 This command does not affect the space between lines. 5 White/black reverse mode has higher priority than underline mode. Even if underline mode is on, it is disabled (but not canceled) when white/black reverse is on. 2.
P25 Development Guide ESC $ [Name] Set absolute print position [Format] ASCII ESC HEX $ nL nH 1B 24 nL nH Decimal 27 36 nL nH [Range] 0 ≤ nL ≤ 255, 0 ≤ nH ≤ 255 [Description] Set the distance from the beginning of the line to the position where subsequent characters are to be printed. Note 1 The distance between the beginning of the line to the print position is [(nL + nH x 256) x (vertical or horizontal motion unit)] inches. 2 Setting outside the specified printable area is ignored.
P25 Development Guide [Note] 1 The command is enabled only when processed at the beginning of the line. 2 This command formats the justification in the printing area. 3 This command justifies the space area according to HT, ESC $ or ESC \ [Default] n = 0 HT [Name] Horizontal Tab [Format] ASCII HT HEX 09 Decimal 9 [Description] Moves the print position to the next horizontal tab position. [Note] 1 This command is ignored unless the next horizontal tab position has been set.
P25 Development Guide 4 This command cancels the previous horizontal tab settings. 5 If you set n=8, the print position is moved to column 9 by sending HT. 6 Up to 32 tab positions (k=32) can be set. Data exceeding 32 tab positions is processed as normal data. 7 Transmit [n]k in ascending order and place an NUL code 0 at the end. 8 When [n]k is less than or equal to the preceding value [n]k-1, tab setting is finished and the following data is processed as normal data.
P25 Development Guide 2.
P25 Development Guide 5 d indicates the bit-image data. Set a corresponding bit to 1 to print a dot or to 0 to not print a dot. 6 If the width of the printing area set by GS L is less than the width required by the data sent with the ESC * command, the following will be performed on the line in question (but the printing cannot exceed the maximum printable area).The width of the printing area is extended to the right to accommodate the amount of data.
P25 Development Guide www.bluebamboo.
P25 Development Guide ESC X X 1 x y d1…dk X 4 x y d1…dk [Name] Print bit-image horizon mode [Format] ASCII ESC ESC HEX X X 1 x y d1...dk 4 x y d1...dk 1B 58 31 x y d1…dk 1B 58 34 x y d1…dk Decimal 27 88 49 x y d1…dk 27 88 52 x y d1…dk [Description] ESC X 1 x y d1 ... d(x*y) print bit image using x*8 dots in the horizontal direction and y dots in the vertical direction. ESC X 4 x y d1 ...
P25 Development Guide ESC f [Name] Print downloaded bit-image. [Format] ASCII ESC f n HEX 1B 66 n Decimal 27 102 n [Range] n = 0, 1, 48, 49 [Description] ESC f prints a downloaded bit image specified by n as follows: Print a downloaded bit image1 when n = 0 or n = 48, Print a downloaded bit image2 when n = 1 or n = 49. [Reference] ESC L, ESC FF 2.
P25 Development Guide 2.8 Control Device Commands ESC = [Name] Select peripheral [Format] ASCII ESC = n HEX 1B 3D n Decimal 27 61 n [Range] 1≤n≤3 [Description] Set n to choose the receiving device to which the host will send data. [Note] [Default] n=1 ESC | [Name] Pause n seconds [Format] ASCII ESC | n HEX 1B 7C n Decimal 27 124 n [Range] 0 < n < 5 [Description] Set n to let the printing process suspend.
P25 Development Guide GS H [Name] Set the time to immediately power off [Format] ASCII GS H HEX 1D 48 Decimal 29 72 n n n [Range] 0<=n<=59 [Description] Let the P25 immediately power off after this time, unit is second, P25 will immediately power off after this time.
P25 Development Guide UART0 (BT port) default Baud Rate is 38400, and it cannot be changed. If set baudrate to 0, then back to default baudrate. (Since S1.0.42) The default Baud rate in the bootloader firmware is 115200, and it can not be changed. These commands are only used to adjust the Baud rate in the application of the P25. Furthermore, the change will be affect only after you restart the printer.
P25 Development Guide 2.10 Enter/Quit Bridge Mode Commands These commands are used to switch the P25 printer between normal mode and bridge mode. P25 printer has two working modes, one is normal mode, and another is bridge mode. In the normal mode, P25 can accept and print data both in Blue Bamboo frame protocol and plain text protocol. When the printer is in the bridge mode, P25 can receive and print data in Blue Bamboo frame protocol as same as in the normal mode.
P25 Development Guide 2.11 Realtime Commands OVERVIEW Character Data and Normal Commands The printer stores data sent from the host computer in the receive buffer temporarily, and then the printer interprets the data and classifies them into commands or character data sequentially.
P25 Development Guide The transmitted battery status from this printer is constructed by [Header ~ NUL] as shown in the following table. Transmitted data Header Identifier Power source (*1) Battery remaining amount (*2) NUL Hex 37H 45H 31H 30H-33H 00H Decimal 55 69 49 48-51 0 Amount of data 1 byte 1 byte 1 byte 1 byte 1 byte (*1) “Power source” must be 31H, indicates is power by battery. (*2) “Battery remaining amount” is as indicated in the following table.
P25 Development Guide 3. Introduction of Communication Protocol The P25 printer supports two types of communication, plain text protocol and framing protocol, Plain text protocol is much simpler however with limited features. The framing protocol supports more features and is recommended. Those two protocols can be automatically interpreted on the fly by the P25. 3.
P25 Development Guide The items marked ‘X’ must be present during the entire communication process. The items marked ‘O’ must be present during certain parts of the process. During transmission, if C0H, C1H, and/or 7DH are shown in the DATA field, 7DH should be inserted before the data and the data should be XORed with 20H and sent. During reception, if 7DH is encountered, 7DH should be ignored and the next byte should be XORed with 20H and stored. 3.
P25 Development Guide 3.4 Printing or Downloading Data Figure 2: Process of printing data Figure 3: Process of software update Note: The “Sending ENQ frame” is optional, it just let app know whether print is working normally, customer could print data without sending this frame (that is only sending data frame). In normal operation, after receiving the print data frame, the printer sends EOT, prints out the data, and sends ETX; then it will wait for the next frame.
P25 Development Guide 3.4.1 Format of Printing or Downloading Data Frame C0H (SOF) ‘D’ (0x44) (TOF) DATA ID Number DATA Length DATA CHECK SUM C1H (EOF) 1 Byte 4 Bytes Data 2 Bytes When printing data or downloading data to the printer, the communication protocol should comply with the upper communication structure. Data ID number: ‘0’~‘9’ (0x30~0x39). Every time the host sends a new print data frame, it increases this number. Data Length: “0001” ~ “3000”.
P25 Development Guide Please see Figure 4. Figure 4: DATA Field Description Each byte in the DATA field should be in HEX code; the highest byte should be transmitted first in the same way DATA Length is transmitted. 3.4.3 Format of Download Frame C0H (SOF) ‘F’(0x46) (TOF) C1H (EOF) This frame just indicates that the following frame is an erasing or a writing flash frame. 3.4.
P25 Development Guide 3.4.6 MSR Response Frame Format DATA in clear text C0H ‘H’(0x48) DATA ID DATA (SOF) (TOF) Number Length DATA CHECK C1H SUM (EOF) The ‘DATA’ field contains the three tracks of MSR data, the format of each track is: Track No Track Data Length Track (1 bytes) (4 bytes) Data 1. The Track No: 0x31 for track 1, 0x32 for track 2 and 0x33 for track 3; 2. The Track Data Length’s format is same as the DATA Length field; 3.
P25 Development Guide The format of the “DATA” is: FIELD Version LEN Byte 1 Key ID (RFU) 1 Alg ID 1 KSN (optional) Encrypte d Track1 Data Length Encrypte d Track1 Data Encrypte d Track2 Data Length Encrypte Encrypted d Track2 Track Data Data Encrypte d Track3 Data Length Encrypte d Track3 Data 10 Card’s Last 4 Digits (Optional) Cardholder’s First and Last name (Optional) Card Expiration Date (Optional) 4 1 1 1 DESCRIPTION Specify the data encryption protocol version.
P25 Development Guide 3.4.7 ACK Frame Format C0H(SOF) 0x06(TOF) C1H(EOF) 0x15(TOF) C1H(EOF) 3.4.8 NACK Frame Format C0H(SOF) 3.4.9 ETX Frame Format C0H(SOF) 0x03(TOF) Data ID No. C1H(EOF) Printer will send this frame after it finishes all of the requested printing. 3.4.10 Format of EOT Frame C0H(SOF) 0x04(TOF) C1H(EOF) Printer will send this frame after it receives the print data frame successfully.
P25 Development Guide Explain to last Eg: Eg Data Content Length Explain C0 1 frame begin 9B 1 Set initial key request 30 1 Frame ID 30 30 32 39 4 Len 01 1 Version 04 1 Algor 00 1 Reserved FF FF 31 32 33 34 35 A0 00 00 10 KSN 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 16 IKEY 58 CC 2 CRC C1 1 frame end 0F 3.4.12 Format of Set DUKPT KSN and initial key (Response) This Data is respond from P25 to program like Device Manager.
P25 Development Guide 3.4.13 P25 MK (Master key)/SK (Session Key) Encrypt The purpose to set MK and SK is to ensure the printing commands in P25 safer than before. The user can set MK/SK according to their request. 1.
P25 Development Guide REQUEST: Eg Data Content Length Explain C0 1 start of frame 8B 1 CMD_SET_MASTER_KEY_DOWN_REQ 36 1 data id 30 30 35 31 4 data len 01 1 Version 01 1 Algor, ENCRYPT_ALG_3DES 01 1 key id 12 34....
P25 Development Guide 3. Sync Session key Main procedures of syncing session key is shown as the below diagram. The customer can encrypt the card information by setting session key which length is 24 bytes in P25 printer. Session key only in ram, if customer begin new session, better renew it, Sync session key: Use command ".
P25 Development Guide REQUEST: Eg Data Length Explain Content C0 1 start of frame 80 1 CT_ENCRYPT_WITH_MASTER 36 1 data id 30 30 33 4 data len 01 1 Version 01 1 key id 01 1 Algor, ENCRYPT_ALG_3DES 35 ENCRYPTED_WITH_MASTER_KEY(CMD_SET_SESSION_KEY,SE SSION_KEY,CRC,PADDING) after decrypt, it would be: 20 87...B6 32 2A Eg data content 85 Length 1 Explain CMD_SYNC_SESSION_KEY_DOWN_ REQ ??...
P25 Development Guide 4. Print encrypted information by session key The following operation is a combined operation. Sync session key for the encrypted information first then print it out through P25 printer. This paragraph only explains the format of printing encrypted information. Sync session key and print string "abc" use command ".
P25 Development Guide 9 [00000047] IRP_MJ_READ Length: 0021 Data: C0 81 37 30 30 31 31 01 01 01 08 36 14 A0 E9 B9 52 25 0A A6 C1 Eg Data Length Explain Content C0 1 start of frame 81 1 CT_ENCRYPT_WITH_SESSION 37 1 data id 30 30 31 4 data len 01 1 Version 01 1 key id 01 1 Algor, ENCRYPT_ALG_3DES 08 36...52 Multipl 25 e of 8 ENCRYPTED_WITH_SESSION_KEY(CMD_PRINT_RESPONSE, PRN_FRAME_ACK,CRC,PADDING) after decrypt, it would be: other content, means error occure.
P25 Development Guide 10 [00000024] IRP_MJ_WRITE Length: 0021 Data: C0 81 37 30 30 31 31 01 01 01 11 9D F1 BA 87 39 15 CA D4 73 C1 Request to read MSR data Eg Data Length Explain C0 1 start of frame 81 1 CT_ENCRYPT_WITH_SESSION 37 1 data id 30 30 31 4 data len 01 1 Version 01 1 key id 01 1 Algor, ENCRYPT_ALG_3DES 11 9D...
P25 Development Guide Eg Data Length Explain C0 1 start of frame 81 1 CT_ENCRYPT_WITH_SESSION 37 1 data id 30 31 32 4 data len 01 1 Version 01 1 key id 01 1 Algor, ENCRYPT_ALG_3DES FD 78...E7 Multipl 60 e of 8 ENCRYPTED_WITH_MASTER_KEY(CMD_MSR_RESPONSE,msr_i nfo,CRC,PADDING)after decrypt, it would be: other content, means error occure. Eg Data Length Explain Content 33 Content 8a 1 CMD_MSR_RESPONSE ??..?? Variable msr info, ref plain text msr info.
P25 Development Guide 3.5.1 Query Status C0 51 C1 is deprecated, it return fixed result. C0 53 C1 could be used to query status. 1 [00006329] IRP_MJ_WRITE Length: 0003, Data: C0 53 C1 2 [00006342] IRP_MJ_READ Length: 0008, Data: 00 C0 53 00 C1 C1 0D 0A 3 [00007332] IRP_MJ_WRITE Length: 0003, Data: C0 53 C1 4 [00007346] IRP_MJ_READ Length: 0008, Data: 00 C0 53 01 C1 C1 0D 0A Note: Step 1. Query P25 Status Step 2. P25 report no error, The 00 Byte indicates no error Step 4.
P25 Development Guide b) print 2D barcode Barcode content: Hello, world! A PDF417 example. Frame content: c0 44 33 30 30 34 30 1d 6b 10 00 00 00 00 00 1f 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 20 41 20 50 44 46 34 31 37 20 65 78 61 6d 70 6c 65 2e 00 33 c1 Description: C0: start tag 44: print command 33: frame sequence 30 30 34 30: 40 bytes data 1d 6b 10 00 00 00 00 00 1f: 2D barcode format 48..
P25 Development Guide c2) double small font size: Frame Content: c0 44 34 30 30 33 33 1b 4b 31 1b 21 19 1b 2d 00 1d 42 00 57 65 6c 63 6f 6d 65 20 74 6f 20 62 6c 75 65 62 61 6d 62 6f 6f 52 2a c1 Description: C0: start tag 44: print command 34: frame sequence 30 30 33 33: 33 bytes data 1b 4b 31: UTF-8 1b 21 19: double width double height based on small font size 1b 2d 00: underline off 1d 42 00: reverse off 57..
P25 Development Guide c4) double big font size: Frame Content: c0 44 36 30 30 33 33 1b 4b 31 1b 21 18 1b 2d 00 1d 42 00 57 65 6c 63 6f 6d 65 20 74 6f 20 62 6c 75 65 62 61 6d 62 6f 6f 52 2b c1 Description: C0: start tag 44: print command 36: frame sequence 30 30 33 33: 33 bytes data 1b 4b 31: UTF-8 1b 21 18: double height double width based on big font size 1b 2d 00: underline off 1d 42 00: reverse off 57..
P25 Development Guide Description: C0: start tag 44: print command 39: frame sequence 30 30 34 31: 41 bytes data 1b 4b 31: UTF-8 1b 21 19: double width double height based on small font size 1b 52 30: Chinese language ef..
P25 Development Guide e) Print Image print Image Data: width* height: 30 * 30 pixels Frame content: c0 44 32 30 31 32 35 1b 58 31 04 1e 00 00 00 00 00 00 00 00 1f ff ff e0 1c 00 00 20 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 18 00 00 00 19 08 22 00 19 fc 3f 00 19 f8 1f 00 1b ff ff 00 1b ff ff 00 18 00 00 00 18 00 00 00 18 00 00 20 18 00 00 60 1c 00 00 60 1c 00 00 20 1c 00 00 20 1c 00 00 20 1c 00 00 20 1c 00 00 20 1c 00 00 20 1c 00 00 20 1f ff ff e0 00 00 00 00 00 00 00 00 18 5b c1 Descri
P25 Development Guide 3.5.3 MSR Operation 1 2 3 [00027590] IRP_MJ_WRITE [00027590] IRP_MJ_READ [00027589] IRP_MJ_READ Length: 0012, Data: C0 48 36 30 30 30 32 32 30 32 30 C1 Length: 0006, Data: 00 C0 04 C1 0D 0A Length: 0006, Data: 00 C0 15 C1 0D 0A Note: 1. MSR request, set Timeout to 20 second 2. P25 immediatly back EOT 3.
P25 Development Guide 3.5.4 Set the time to power off GS | 1 n [Name] Set the time to power off [Format] ASCII GS | 1 n HEX 1D 7C 01 n Decimal 29 124 1 n [Range] 2<=n<=59, 0xFF [Description] Set enter power off mode time, unit is minute, after P25 enter sleep mode(ref above cmd), if no operation occurs, P25 will auto power off after this time, set to 0xFF means disable this feature( never auto power off), default setting is 15 minutes.
P25 Development Guide 3.6 P25i/P25i-M Communication Protocol (Applies only to P25 Made for iPhone version) P25i/P25i-M is a special Printer that can working with iPhone/iPod Touch through serial cable. It has two operations, Print receipt and read MSR read protocolString "com.bluebamboo.p25i", protocolIndex 1 Default bundleSeedIDString is "YT79N447RD", in fact, we would custom it to our customer's App ID that is assigned by Apple. 3.6.
P25 Development Guide This example Command means printing is successful. In the Command “55 66 77 88” is Operation flag, “03” is the print result command and “00” is the Data that indicates the printing is successful. If the Data is not “00” that means error in printing. 3.6.1.3 MSR Read Command Direction: iPhone--to-->P25i/P25i-M printer(s).
P25 Development Guide 3.6.2.
P25 Development Guide ACK: 11 [00000287] IRP_MJ_WRITE Data: FF 55 06 00 02 00 02 00 42 B4 CloseDataSession: 12 [00000300] IRP_MJ_WRITE Data: FF 55 06 00 40 00 03 00 00 B7 DevACK: 13 [00000310] IRP_MJ_READ Data: FF 55 06 00 41 00 03 00 40 76 Length: 0010 Length: 0010 Length: 0010 www.bluebamboo.
P25 Development Guide 4 P25 Reference Code 4.1 Java for Blackberry This kit of files offers source code that BLUE BAMBOO has provided for customer reference. Developers can copy and modify this code to accelerate their development. Please see the Software license agreement at the end of this text which applies to all Blue Bamboo software products. When using this software, you are agreeing to the Software license agreement. For questions or comments, please contact support@bluebamboo.com.
P25 Development Guide Instructions 1. This Source Code consists of: two code samples located in folders’P25_Console_Demo’ and ‘P25_Console_Msr’, P25_Print_Demo.bat and P25_Print_Demo.txt files described above. 2. This demo should be compiled in Visual C++ Studio, users of other development tools can print string and test ESC command. 4.3 Windows Mobile 5.x and 6.x REVISION HISTORY January 7th, 2008 release, version 0.1.0 Summary of included files: SerialApi.cs P25.cs Instructions 1.
P25 Development Guide 4.4.2 Setting up a Serial Port profile (SPP) Connection We demonstrate Bluetooth printing using the SPP profile, this is the only one Windows CE natively supports. The basic steps to set up a Bluetooth SPP connection are: • Inquiry: Find nearby devices in range. This will result with all access points responding with their address. • Paging: The device will invoke a baseband procedure called paging.
P25 Development Guide 4.5 Software License Agreement This is a legal agreement between you (either as an individual or as an authorized representative of your employer) and BLUE BAMBOO. It concerns your rights to use this file and any accompanying written materials (the P25 Reference Code). In consideration for BLUE BAMBOO allowing you to access the P25 Reference Code, you are agreeing to be bound by the terms of this Agreement.
P25 Development Guide 4.5.4 U.S. Government Disclosure LICENSOR will allow LICENSEE to disclose the P25 Reference Code SOURCE CODE to those employees of the U.S. Government that require access to the P25 Reference Code SOURCE CODE to approve the LICENSEE ‘S Products; LICENSOR understands that the U.S. Government is legally restricted in its ability to distribute contractor proprietary information. LICENSEE will maintain a legally binding contract with the U.S.
P25 Development Guide 4.5.10 Damage Limitation INDEPENDENTLY OF ANY OTHER REMEDY LIMITATION HEREOF AND NOTWITHSTANDING ANY ESSENTIAL PURPOSE OF ANY SUCH LIMITED REMEDY, IT IS AGREED THAT IN NO EVENT SHALL BLUE BAMBOO BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY KIND UNDER THIS AGREEMENT. 4.5.
P25 Development Guide 5 Revision History Revision 1.0 (June 01, 2007) Initial Release. Revision 1.1 (February 18, 2008) Add Print Commands in Section 2.1 Add Communication protocol in Section 3. Revision 1.2 (June 16, 2008) Add P25 Reference Code and the Software License Agreement. Revision 1.3 (August, 2008) Add commands of P25. Revision 1.4 (September, 2008) Add data encryption in Section 3.4.6 Revision 1.5 (October, 2008) Add additional clear text data elements in Section 3.4.6 Revision 1.