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

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

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

คำสั่ง NCI ที่เป็นกรรมสิทธิ์ของ Android จะใช้รหัสกลุ่ม (GID) ที่เป็นกรรมสิทธิ์ 0xF และพื้นที่รหัส opcode Identifier (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

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

OID ของ Android ประเภทข้อความ ชื่อข้อความ
0x00 NCI_MT_CMD NCI_ANDROID_GET_CAPS_CMD
RSP NCI NCI_ANDROID_GET_CAPS_RSP
0x NCI_MT_CMD NCI_ANDROID_POWER_SAVING_CMD
RSP NCI NCI_ANDROID_POWER_SAVING_RSP
0x NCI_MT_CMD NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
RSP NCI NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
0x NCI_MT_NTF NCI_ANDROID_POLLING_FRAME_NTF
0x NCI_MT_CMD NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
RSP NCI 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 ไม่ส่งกลับความสามารถของ 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) ของความสามารถที่รองรับ
ความสามารถ[0..n] (m + 2) * n อ็อกเท็ต ความสามารถที่รองรับ
ประเภท 1 อ็อกเท็ต ตัวระบุของความสามารถ
Len 1 อ็อกเท็ต ความยาว (m) ของค่า
ค่า ม. อ็อกเท็ต คุณค่าของความสามารถ
ความสามารถที่เป็นกรรมสิทธิ์ของ Android
ชื่อความสามารถ รหัส ขนาด ค่า/คำอธิบาย
โหมดสังเกตการณ์ 0x00 1 อ็อกเท็ต การรองรับโหมดสังเกตการณ์
0x00 (ค่าเริ่มต้น) - ไม่รองรับฟีเจอร์นี้
0x01 - รองรับฟีเจอร์ที่มีการปิดใช้งาน RF จากโฮสต์ (จำเป็นสำหรับ Android 15 ขึ้นไป)
ค่าอื่นๆ ทั้งหมดจะเป็น RFU
การแจ้งเตือนเฟรมแบบสำรวจ 0x 1 อ็อกเท็ต รองรับการแจ้งเตือนของเฟรมแบบสำรวจ 0x01 หากรองรับ ส่วน 0x00 (ค่าเริ่มต้น) จะไม่ได้รับการสนับสนุน ค่าอื่นๆ ทั้งหมดจะเป็น RFU
โหมดประหยัดพลังงาน 0x 1 อ็อกเท็ต การสนับสนุนโหมดประหยัดพลังงาน 0x01 หากรองรับ ส่วน 0x00 (ค่าเริ่มต้น) จะไม่ได้รับการสนับสนุน ค่าอื่นๆ ทั้งหมดจะเป็น RFU
ตัวกรอง Auotransact Polling Loop 0x 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 ปิดใช้โหมดประหยัดพลังงาน
0x เปิดใช้โหมดประหยัดพลังงาน

NCI_ANDROID_POWER_SAVING_RSP

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

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

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

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

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

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

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

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

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

ฟิลด์เพย์โหลด ขนาด ค่า/คำอธิบาย
ข้อมูลแบบสำรวจ[0..n] (m +3) * n อ็อกเท็ต รายการคำขอการสำรวจที่ได้รับตั้งแต่ช่วงล่าสุด การแจ้งเตือน ผลลัพธ์แต่ละรายการจะระบุประเภท (เทคโนโลยี) ของการแสดงผล และข้อมูลที่ระบุตัวตนได้จากคำขอดังกล่าวโดยขึ้นอยู่กับเทคโนโลยีนั้น
ประเภท 1 อ็อกเท็ต ดูประเภทเฟรม
ธง 1 อ็อกเท็ต โปรดดู Flag Byte
ความยาว 1 อ็อกเท็ต ความยาว (ม.) ของรายงานข้อมูลการสำรวจ ซึ่งรวมถึงการประทับเวลาและช่องข้อมูลที่ได้รับ
การประทับเวลา 4 อ็อกเท็ต การประทับเวลาวัดเป็นมิลลิวินาทีสำหรับการรับคำขอในแบบสำรวจ (Big Endian)
กลุ่มสี 1 อ็อกเท็ต ความเข้มงวดของคำขอแบบสำรวจ
0xFF หมายถึงค่านี้ไม่พร้อมใช้งาน
ข้อมูล ม. - 5 อ็อกเท็ต ส่งคืนข้อมูลที่ระบุตัวบุคคลนั้นได้ซึ่งปรากฏในคำขอการหยั่งสัญญาณ
ประเภทเฟรม
เฟรมแบบสำรวจ ประเภท ขนาด ค่า/คำอธิบาย
ฟิลด์ระยะไกล 0x00 1 อ็อกเท็ต 0x00 ช่องปิดอยู่
0x ช่องเปิดอยู่
0x02..0xFF แบบ RFU
NFC-A 0x n อ็อกเท็ต ค่าต้องมีคำสั่ง ISO 14443-3 (เช่น REQ หรือ WUP)
NFC-B 0x n อ็อกเท็ต ค่าต้องมีไบต์ AIF และคำสั่ง ISO 14443-3 (เช่น REQ หรือ WUP)
NFC-F 0x n อ็อกเท็ต ค่าต้องมีคำสั่ง ISO 14443-3 (เช่น REQ หรือ WUP)
NFC-V 0x n อ็อกเท็ต ค่าต้องมีคำสั่ง ISO 14443-3 (เช่น REQ หรือ WUP)
ไม่ทราบ 0x07 n อ็อกเท็ต ข้อมูลเฟรมดิบ
คำนิยามของไบต์แฟล็ก
ธง
b0 ข1 วิ b3 b4 B5 B6 ข7
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 ปิดใช้โหมดสังเกตแล้ว
0x เปิดใช้โหมดสังเกตแล้ว