คำสั่ง NCI ที่เป็นกรรมสิทธิ์ของ Android

อินเทอร์เฟซตัวควบคุม NFC (NCI) ใช้เพื่อโต้ตอบกับตัวควบคุม NFC (NFCC) หน้านี้จะอธิบายข้อกำหนดของคำสั่ง NCI ที่เป็นกรรมสิทธิ์ของ Android

คําจํากัดความของ NCI

คำสั่ง NCI ที่เป็นกรรมสิทธิ์ของ Android ใช้รหัสกลุ่ม (GID) 0xF และพื้นที่โค้ดตัวระบุอ็อปโค้ด (OID) ของ Android 0xC

รูปแบบแพ็กเก็ตทั่วไป

รูปแบบแพ็กเก็ต NCI ของ Android เป็นไปตามข้อกำหนด NCI สำหรับแพ็กเก็ตควบคุมที่ใช้ Group_ID 0xF และ Opcode_ID 0x0C ที่เป็นกรรมสิทธิ์ สำหรับข้อความที่เป็นกรรมสิทธิ์ของ Android แต่ละรายการ คุณต้องตั้งค่าไบต์แรกของเพย์โหลดแพ็กเก็ตเป็น opcode ของ Android (0x0C) แพ็กเก็ตควบคุมของ Android ใช้ Message_Type และ PBF เพื่อระบุคำสั่ง การตอบกลับ และการแจ้งเตือนในลักษณะเดียวกับคำสั่งมาตรฐาน

รูปแบบแพ็กเก็ต Android แสดงอยู่ในตารางต่อไปนี้

0 1 2 3 4 5 6 7
Message_Type PBF Group_ID = 0xF (PROPRIETARY)
สงวนไว้สำหรับการใช้งานในอนาคต (RFU) Opcode_ID = 0x0C (ANDROID)
Payload_Length
Android_Opcode_ID
Android_Payload

ตัวระบุอ็อปโค้ด Android ที่กำหนดไว้แสดงอยู่ในตารางต่อไปนี้ ข้อมูลจำเพาะของแต่ละแพ็กเก็ตจะแสดงในส่วนถัดไป

OID ของ Android ประเภทข้อความ ชื่อข้อความ
0x00 NCI_MT_CMD NCI_ANDROID_GET_CAPS_CMD
NCI_MT_RSP NCI_ANDROID_GET_CAPS_RSP
0x01 NCI_MT_CMD NCI_ANDROID_POWER_SAVING_CMD
NCI_MT_RSP NCI_ANDROID_POWER_SAVING_RSP
0x02 NCI_MT_CMD NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
NCI_MT_RSP NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
0x03 NCI_MT_NTF NCI_ANDROID_POLLING_FRAME_NTF
0x04 NCI_MT_CMD NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
NCI_MT_RSP NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

คําสั่ง "รับความสามารถ"

โฮสต์ใช้ NCI_ANDROID_GET_CAPS_CMD เพื่อค้นหารายการฟีเจอร์ที่เป็นกรรมสิทธิ์ของ Android ที่ NFCC รองรับ คำสั่ง NCI_ANDROID_GET_CAPS_CMD จะไม่ใช้พารามิเตอร์ใดๆ

NFCC ต้องตอบกลับด้วยNCI_ANDROID_GET_CAPS_RSPการตอบกลับที่มีสถานะSTATUS_OKและรายการความสามารถและฟีเจอร์ที่รองรับ

หาก NFCC ไม่รองรับ NCI_ANDROID_GET_CAPS_CMD โฮสต์ต้องถือว่าความสามารถแต่ละรายการใช้ค่าเริ่มต้นที่ระบุ หาก NFCC ไม่ได้แสดงความสามารถที่ระบุในการตอบกลับ โฮสต์ต้องถือว่าความสามารถดังกล่าวมีค่าเริ่มต้นที่ระบุ

NCI_ANDROID_GET_CAPS_CMD

ฟิลด์เพย์โหลด ขนาด ค่า/คําอธิบาย
ไม่มี 0 อ็อกเท็ต

NCI_ANDROID_GET_CAPS_RSP

ฟิลด์เพย์โหลด ขนาด ค่า/คําอธิบาย
สถานะ 1 อ็อกเท็ต ดูรหัสสถานะในตาราง 140 ของข้อมูลจำเพาะ NCI
Android_Version 2 อ็อกเท็ต ระบุเวอร์ชันข้อกำหนด Android ที่ NFCC นำมาใช้
0x0000 Android 15
จํานวนความสามารถ 1 อ็อกเท็ต จํานวน (n) ของความสามารถที่รองรับ
Capabilities[0..n] (m + 2) * n อ็อกเท็ต ความสามารถที่รองรับ
ประเภท 1 อ็อกเท็ต ตัวระบุของความสามารถ
Len 1 อ็อกเท็ต ความยาว (ม.) ของค่า
ค่า อ็อกเท็ต m มูลค่าของความสามารถ
ความสามารถที่เป็นกรรมสิทธิ์ของ Android
ชื่อความสามารถ รหัส ขนาด ค่า/คําอธิบาย
โหมดสังเกตการณ์ 0x00 1 อ็อกเท็ต รองรับโหมดสังเกตการณ์
0x00 (ค่าเริ่มต้น) - ไม่รองรับฟีเจอร์นี้
0x01 - รองรับฟีเจอร์ด้วยการปิดใช้งาน RF จากโฮสต์ (จำเป็นสำหรับ Android 15 ขึ้นไป)
ค่าอื่นๆ ทั้งหมดคือ RFU
การแจ้งเตือนกรอบเวลาการโหวต 0x01 1 อ็อกเท็ต รองรับการแจ้งเตือนกรอบเวลาการสำรวจ 0x01 หากรองรับ 0x00 (ค่าเริ่มต้น) หากไม่รองรับ ค่าอื่นๆ ทั้งหมดคือ RFU
โหมดประหยัดพลังงาน 0x02 1 อ็อกเท็ต รองรับโหมดประหยัดพลังงาน 0x01 หากรองรับ 0x00 (ค่าเริ่มต้น) หากไม่รองรับ ค่าอื่นๆ ทั้งหมดคือ RFU
ตัวกรองลูปการโหวตของ Auotransact 0x03 1 อ็อกเท็ต การรองรับตัวกรองลูปการสำรวจในเฟิร์มแวร์เพื่อข้ามโหมดสังเกตสำหรับรูปแบบที่เฉพาะเจาะจงเมื่อเปิดใช้โหมดสังเกตทั่วโลก
0x00 (ค่าเริ่มต้น) - ไม่รองรับฟีเจอร์นี้
0x01 - รองรับตัวกรองลูปการสำรวจ
ค่าอื่นๆ ทั้งหมดคือ RFU
0x04..0xFF 0 อ็อกเท็ต สงวนไว้สำหรับการใช้งานในอนาคต

คำสั่งการประหยัดพลังงาน

หากต้องการเปลี่ยน NFCC เป็นโหมดประหยัดพลังงาน โฮสต์สามารถใช้คำสั่ง NCI_ANDROID_POWER_SAVING_CMD NFCC ต้องตอบกลับด้วย NCI_ANDROID_POWER_SAVING_RSP พร้อมรหัสสถานะที่บ่งบอกถึงความสำเร็จหรือความล้มเหลว

ขณะอยู่ในโหมดประหยัดพลังงาน โฮสต์ต้องไม่ส่งคําสั่งใดๆ ไปยัง NFCC และ NFCC ต้องไม่ส่งการแจ้งเตือนหรือการตอบกลับไปยังโฮสต์ NFCC หรือองค์ประกอบที่ปลอดภัยแบบฝัง (eSE) สามารถรับคำขอการชำระเงินขาเข้าโดยอัตโนมัติตามการกำหนดค่าการกำหนดเส้นทางที่ตั้งไว้ก่อนที่จะเปิดใช้โหมดประหยัดพลังงาน

หากต้องการกลับไปใช้โหมดกำลังไฟเต็ม โฮสต์สามารถรีเซ็ตหรือเริ่มต้น NFCC อีกครั้ง

NCI_ANDROID_POWER_SAVING_CMD

ฟิลด์เพย์โหลด ขนาด ค่า/คําอธิบาย
โหมดประหยัดพลังงาน 1 อ็อกเท็ต 0x00 ปิดใช้โหมดประหยัดพลังงาน
0x01 เปิดใช้โหมดประหยัดพลังงาน

NCI_ANDROID_POWER_SAVING_RSP

ฟิลด์เพย์โหลด ขนาด ค่า/คําอธิบาย
สถานะ 1 อ็อกเท็ต ดูรหัสสถานะในตาราง 140 ของข้อกำหนด NCI

ตั้งค่าคำสั่งโหมดสังเกตการณ์

หากต้องการเปิดหรือปิดใช้งานโหมดสังเกตการณ์ โฮสต์สามารถใช้คำสั่ง NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD NFCC ต้องตอบกลับด้วย NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP พร้อมรหัสสถานะที่บ่งบอกถึงความสำเร็จหรือความล้มเหลว

เมื่อปิดใช้โหมดสังเกตการณ์ NFCC ต้องใช้กิจกรรมโหมดฟังมาตรฐานตามข้อกำหนดทางเทคนิคของกิจกรรม

เมื่อโหมดสังเกตการณ์ทำงานอยู่ NFCC ต้องไม่ตอบสนองคำขอโพลใดๆ ในระหว่างลูปการโพลในโหมดฟังจนกว่าจะได้รับอนุญาตอย่างชัดเจนจากโฮสต์ NFCC ต้องส่งRF_FIELD_INFO_NTFการแจ้งเตือน (ตามที่ระบุไว้ในส่วนที่ 5.3 ของข้อกำหนด NCI) เมื่อตรวจพบการเปิดใช้งานภาคสนาม หากการค้นพบโหมดแบบสำรวจทำงานอยู่ NFCC ต้องใช้งานกิจกรรมโหมดแบบสำรวจตามข้อกำหนดทางเทคนิคของกิจกรรม NFCC สามารถแคชข้อมูลการสำรวจเพื่อดำเนินการเปิดใช้งานอุปกรณ์ทันทีที่ปิดใช้งานโหมดสังเกตการณ์

NFCC ควรปิดโหมดสังเกตการณ์หากโฮสต์ปิดเครื่องด้วยเหตุผลใดก็ตาม (เช่น แบตเตอรี่หมดหรือผู้ใช้เป็นผู้ปิด) เพื่อให้ธุรกรรม SE ดำเนินการต่อได้

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

ฟิลด์เพย์โหลด ขนาด ค่า/คําอธิบาย
โหมดสังเกต 1 อ็อกเท็ต 0x00 ปิดใช้โหมดสังเกตการณ์ (ค่าเริ่มต้น)
0x01 เปิดใช้โหมดสังเกตการณ์

NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP

ฟิลด์เพย์โหลด ขนาด ค่า/คําอธิบาย
สถานะ 1 อ็อกเท็ต ดูรหัสสถานะในตาราง 140 ของข้อมูลจำเพาะ NCI

การแจ้งเตือนเกี่ยวกับลูปการโหวต

NFCC ต้องส่งNCI_ANDROID_POLLING_FRAME_NTFการแจ้งเตือนไปยังโฮสต์หลังจากเฟรมลูปการโหวตแต่ละเฟรม เมื่อสร้างการแจ้งเตือนทั้ง RF_FIELD_INFO_NTF และ NCI_ANDROID_POLLING_FRAME_NTF แล้ว NFCC ต้องส่ง NCI_ANDROID_POLLING_FRAME_NTF หลังจาก RF_FIELD_INFO_NTF

การแจ้งเตือน NCI_ANDROID_POLLING_FRAME_NTF จะไม่ขึ้นอยู่กับว่าโหมดสังเกตการณ์ทำงานอยู่หรือไม่ เมื่อโหมดสังเกตการณ์ทำงานอยู่ NFCC จะต้องส่งการแจ้งเตือน NCI_ANDROID_POLLING_FRAME_NTF เสมอก่อนที่จะดําเนินการกับธุรกรรม

NCI_ANDROID_POLLING_FRAME_NTF

ฟิลด์เพย์โหลด ขนาด ค่า/คําอธิบาย
Polling Data[0..n] (m +3) * n อ็อกเท็ต รายการคำขอการสำรวจที่ได้รับนับตั้งแต่การแจ้งเตือนครั้งล่าสุด ผลการค้นหาแต่ละรายการจะแสดงประเภท (เทคโนโลยี) ของคำขอที่ได้รับและข้อมูลที่ระบุตัวตนได้จากคำขอ ทั้งนี้ขึ้นอยู่กับเทคโนโลยี
ประเภท 1 อ็อกเท็ต ดูประเภทเฟรม
ธง 1 อ็อกเท็ต ดูไบต์ Flag
ความยาว 1 อ็อกเท็ต ความยาว (ม.) ของรายงานข้อมูลการสำรวจ รวมถึงฟิลด์การประทับเวลาและอัตราขยาย
การประทับเวลา 4 อ็อกเท็ต การประทับเวลาที่วัดเป็นมิลลิวินาทีของการรับคําขอการโหวตแบบ Big Endian
อัตราขยาย 1 อ็อกเท็ต ความแรงของคำขอการสำรวจ
0xFF บ่งบอกว่าไม่มีค่า
ข้อมูล m - อ็อกเท็ต 5 รายการ แสดงข้อมูลที่ระบุตัวตนได้ในคําขอการโหวต
ประเภทเฟรม
เฟรมการสำรวจ ประเภท ขนาด ค่า/คําอธิบาย
ฟิลด์ระยะไกล 0x00 1 อ็อกเท็ต 0x00 ปิดช่อง
0x01 ฟิลด์เปิดอยู่
0x02..0xFF RFU
NFC-A 0x01 อ็อกเท็ต n ค่าต้องมีคำสั่ง ISO 14443-3 (เช่น REQ หรือ WUP)
NFC-B 0x02 อ็อกเท็ต n ค่าต้องมีไบต์ AIF และคำสั่ง ISO 14443-3 (เช่น REQ หรือ WUP)
NFC-F 0x03 อ็อกเท็ต n ค่าต้องมีคำสั่ง ISO 14443-3 (เช่น REQ หรือ WUP)
NFC-V 0x04 อ็อกเท็ต n ค่าต้องมีคำสั่ง ISO 14443-3 (เช่น REQ หรือ WUP)
ไม่ทราบ 0x07 อ็อกเท็ต n ข้อมูลเฟรมดิบ
คําจํากัดความของไบต์ Flag
ธง
b0 b1 b2 b3 b4 b5 b6 b7
0 เฟรมสั้น RFU RFU RFU RFU RFU RFU RFU
1 เฟรมขนาดยาว

คำสั่งการค้นหาสถานะโหมดสังเกตการณ์

หากต้องการเรียกดูสถานะปัจจุบันของโหมดคำสั่งแบบพาสซีฟ โฮสต์สามารถใช้คำสั่ง NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD NFCC ต้องตอบกลับด้วย NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP พร้อมรหัสสถานะที่บ่งบอกถึงความสำเร็จหรือความล้มเหลว

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD

ฟิลด์เพย์โหลด ขนาด ค่า/คําอธิบาย
ไม่มี 0 อ็อกเท็ต

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

ฟิลด์เพย์โหลด ขนาด ค่า/คําอธิบาย
สถานะ 1 อ็อกเท็ต ดูรหัสสถานะในตาราง 140 ของข้อกำหนด NCI
โหมดสังเกต 1 อ็อกเท็ต 0x00 ปิดใช้โหมดสังเกตการณ์แล้ว
0x01 เปิดใช้โหมดสังเกตการณ์แล้ว