การอ้างอิง GnssClock Struct
#include <
gps.h
>
ฟิลด์ข้อมูล |
|
size_t | size |
GnssClockFlags | flags |
int16_t | leap_second |
int64_t | time_ns |
คู่ | time_uncertainty_ns |
int64_t | full_bias_ns |
คู่ | bias_ns |
คู่ | bias_uncertainty_ns |
คู่ | drift_nsps |
คู่ | drift_uncertainty_nsps |
uint32_t | hw_clock_discontinuity_count |
คำอธิบายโดยละเอียด
เอกสารประกอบในสนาม
double bias_ns |
double bias_uncertainty_ns |
ความคลาดเคลื่อน 1-ซิกมาที่เกี่ยวข้องกับการประมาณเวลา GPS ในพื้นที่ (ความเบี่ยงเบนของนาฬิกา) เป็นนาโนวินาที ความไม่แน่นอนจะแสดงเป็นค่าสัมบูรณ์ (แบบด้านเดียว)
หากมีข้อมูล "flags" ต้องมี GNSS_CLOCK_HAS_BIAS_UNCERTAINTY ต้องระบุค่านี้หากเครื่องรับมีเวลา GPS โดยประมาณ
double drift_nsps |
ความคลาดเคลื่อนของนาฬิกาเป็นนาโนวินาที (ต่อวินาที)
ค่าบวกหมายความว่าความถี่สูงกว่าความถี่ที่ระบุ และ (full_bias_ns + bias_ns) มีค่าเป็นบวกมากขึ้นเมื่อเวลาผ่านไป
ค่ามี "ความคลาดเคลื่อนของค่าเฉลี่ย" อยู่ หากมีข้อมูล "flags" ต้องมี GNSS_CLOCK_HAS_DRIFT
ค่านี้เป็นค่าที่ต้องระบุหากเครื่องรับมีเวลา GNSS โดยประมาณ
double drift_uncertainty_nsps |
ความคลาดเคลื่อน 1-Sigma ที่เชื่อมโยงกับการเลื่อนเวลาของนาฬิกาเป็นนาโนวินาที (ต่อวินาที) ความไม่แน่นอนจะแสดงเป็นค่าสัมบูรณ์ (แบบด้านเดียว)
หากมีข้อมูล "flags" ต้องมี GNSS_CLOCK_HAS_DRIFT_UNCERTAINTY หาก GPS คำนวณการแก้ไขตำแหน่งแล้ว ช่องนี้จะเป็นแบบบังคับและต้องป้อนข้อมูล
GnssClockFlags flags |
int64_t full_bias_ns |
ความแตกต่างระหว่างนาฬิกาฮาร์ดแวร์ (ช่อง "time") ภายในเครื่องรับสัญญาณ GPS กับเวลา GPS ที่แท้จริงนับตั้งแต่ 0000Z วันที่ 6 มกราคม 1980 เป็นนาโนวินาที
เครื่องหมายของค่าจะกำหนดโดยสมการต่อไปนี้ ค่าประมาณเวลา GPS ในพื้นที่ = time_ns - (full_bias_ns + bias_ns)
ต้องระบุค่านี้หากเครื่องรับมีเวลา GPS โดยประมาณ หากเวลาที่คำนวณไว้เป็นของกลุ่มดาวที่ไม่ใช่ GPS คุณต้องใช้การเลื่อนเวลาของกลุ่มดาวนั้นเทียบกับ GPS เพื่อป้อนค่านี้ ค่าประมาณความคลาดเคลื่อนของผลรวมของค่านี้และ bias_ns คือ bias_uncertainty_ns และผู้เรียกใช้มีหน้าที่รับผิดชอบในการใช้ค่าความไม่แน่นอนนี้ (ค่านี้อาจสูงมากก่อนที่จะมีการแก้เวลา GPS) หากมีข้อมูล "flags" ต้องมี GNSS_CLOCK_HAS_FULL_BIAS
uint32_t hw_clock_discontinuity_count |
ต้องกรอกข้อมูลในช่องนี้เมื่อมีความไม่ต่อเนื่องของนาฬิกา HW
"การหยุดชะงัก" มีไว้สำหรับกรณีที่เปลี่ยนจากแหล่งที่มาของนาฬิกาหนึ่งไปยังอีกแหล่งหนึ่ง โดยทั่วไปแล้ว ตัวกำเนิดสัญญาณคริสตอลแบบทำงานต่อเนื่อง (XO) ตัวเดียวไม่ควรมีความไม่ต่อเนื่อง และสามารถตั้งค่าและปล่อยไว้ที่ 0 ได้
อย่างไรก็ตาม หากค่า time_ns (นาฬิกา HW) มาจากแหล่งที่มาแบบผสม ซึ่งไม่ราบรื่นเท่ากับ XO ทั่วไป หรือหยุดและเริ่มใหม่ ค่านี้จะเพิ่มขึ้นทุกครั้งที่เกิดความไม่ต่อเนื่อง (เช่น ค่านี้อาจเริ่มต้นที่ 0 เมื่ออุปกรณ์เปิดเครื่องและเพิ่มขึ้นทุกครั้งที่มีการเปลี่ยนแปลงความต่อเนื่องของนาฬิกา ในกรณีที่ค่านี้ถึงระดับเต็ม (ซึ่งไม่น่าจะเกิดขึ้น) จะต้องมีการเปลี่ยนรูปแบบ (ไม่ใช่การจำกัด) เพื่อให้ค่านี้เปลี่ยนแปลงต่อไปในระหว่างเหตุการณ์ที่ไม่ต่อเนื่องที่ตามมา)
เมื่อตัวเลขนี้ไม่เปลี่ยนแปลงระหว่างการรายงานของ GnssClock เราอาจสรุปได้ว่าค่า time_ns ทำงานอย่างต่อเนื่อง เช่น มาจากนาฬิกาคุณภาพสูงตัวเดียว (เช่น XO หรือดีกว่า ซึ่งมักใช้ในการสุ่มตัวอย่างสัญญาณ GNSS อย่างต่อเนื่อง)
โดยเฉพาะอย่างยิ่งในช่วงที่มีสัญญาณ GNSS เพียงไม่กี่สัญญาณ เราคาดหวังว่านาฬิกา HW จะทำงานอย่างต่อเนื่องให้ได้นานที่สุด เนื่องจากจะช่วยหลีกเลี่ยงความจำเป็นในการใช้ (การสิ้นเปลือง) การวัด GNSS เพื่อแก้ไขความเบี่ยงเบนและค่าความคลาดเคลื่อนของนาฬิกา GPS อีกครั้งอย่างเต็มรูปแบบเมื่อใช้การวัดที่มาพร้อมกับรายงาน GnssData ติดต่อกัน
int16_t leap_second |
int64_t time_ns |
ค่านาฬิกาภายในของอุปกรณ์รับสัญญาณ GNSS ค่านี้คือค่านาฬิกาฮาร์ดแวร์ในเครื่อง
สําหรับนาฬิกาฮาร์ดแวร์ในเครื่อง ค่านี้คาดว่าจะเพิ่มขึ้นอย่างต่อเนื่องขณะที่นาฬิกาฮาร์ดแวร์ยังคงเปิดอยู่ (สำหรับกรณีของนาฬิกา HW ที่ไม่ได้เปิดต่อเนื่อง โปรดดูช่อง hw_clock_discontinuity_count) เวลา GPS โดยประมาณของเครื่องรับจะคำนวณได้โดยลบผลรวมของ full_bias_ns และ bias_ns (หากมี) ออกจากค่านี้
เวลา GPS นี้คาดว่าจะเป็นค่าประมาณที่ดีที่สุดของเวลา GPS ปัจจุบันที่เครื่องรับ GNSS ทำได้
คุณสามารถระบุความแม่นยำระดับนาโนวินาทีได้โดยใช้ฟิลด์ "bias_ns" ค่ามี "ความไม่แน่นอนของเวลา" อยู่ด้วย
ต้องกรอกข้อมูลในช่องนี้
double time_uncertainty_ns |
ความคลาดเคลื่อน 1-Sigma ที่เชื่อมโยงกับเวลาของนาฬิกาเป็นนาโนวินาที ความไม่แน่นอนจะแสดงเป็นค่าสัมบูรณ์ (แบบด้านเดียว)
หากมีข้อมูล "flags" ต้องมี GNSS_CLOCK_HAS_TIME_UNCERTAINTY ค่านี้เป็น 0 จริง (เป็นนาฬิกาท้องถิ่นอ้างอิงที่ใช้วัดเวลาอื่นๆ ทั้งหมดและความไม่แน่นอนของเวลา) (ดังนั้นจึงไม่ต้องระบุช่องนี้ตาม Flag GNSS_CLOCK_HAS_TIME_UNCERTAINTY หรือระบุและตั้งค่าเป็น 0)
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้
- hardware/libhardware/include/hardware/ gps.h