الإصدار 2.1
الخلفية
في الإصدارات السابقة من واجهة برمجة التطبيقات، كانت الكاميرا المتوافقة مع OSC تنشئ نقطة وصول إلى شبكة Wi-Fi يمكن لتطبيقات "التجوّل الافتراضي" من Google على نظامَي التشغيل iOS وAndroid الاتصال بها. يوجّه التطبيق كاميرا OSC لالتقاط الصور وينزّل أيضًا المحتوى الذي تم التقاطه من الكاميرا لنشره بعد ذلك في ميزة "التجوّل الافتراضي من Google". ولتسريع نشر المحتوى، طرحنا سير عمل اختياري جديدًا يتيح لكاميرات OSC تحميل المحتوى إلى خادم "التجوّل الافتراضي" مباشرةً. وهذا يلغي النقل المزدوج الطويل للمحتوى أولاً من الكاميرا إلى التطبيق، ثم من التطبيق إلى خادم التجوّل الافتراضي. تمت إضافة هذا الإعداد في المستوى 2.1 من واجهة برمجة التطبيقات، وهو ينطبق فقط على كاميرات OSC التي يمكنها توفير نقطة وصول Wi-Fi واتصال أيضًا بنقطة وصول Wi-Fi في البنية الأساسية تتيح الاتصال بالإنترنت.
نظرة عامة
يتطلّب سير عمل التحميل الجديد توفُّر كاميرات لتوفير طريقة (على سبيل المثال، زر مادي مخصَّص أو مزيج من الأزرار الحالية) للسماح للمستخدمين بالتبديل بين وضعَين لشبكة Wi-Fi:
- الوضع المباشر: في هذا الوضع، تعمل الكاميرا كنقطة وصول تسمح للجهاز الجوّال بالاتصال بها. في هذا الوضع، يمكن للأجهزة المحمولة التحكم في الكاميرا لتنفيذ مهام مثل التقاط الصور. يمكن للأجهزة الجوّالة أيضًا تزويد الكاميرا ببيانات اعتماد نقطة وصول Wi-Fi التي يمكن للكاميرا استخدامها بعد ذلك للتبديل إلى وضع الإنترنت.
- وضع الإنترنت: في هذا الوضع، تتصل الكاميرا بنقطة وصول إلى شبكة Wi-Fi تتضمّن الاتصال بالإنترنت. وهو يستخدم معرِّف نقطة الوصول وكلمة المرور اللذَين تم توفيرهما له من التطبيق عندما كانت الكاميرا في السابق في الوضع المباشر. ويمكن للأجهزة الجوّالة بدء عمليات التحميل من الكاميرا مباشرةً إلى خادم "التجوّل الافتراضي" في هذا الوضع. كما يمكنهم أيضًا الاستمرار في التحكم في الكاميرا لأداء مهام مثل التقاط الصور.
من المفترض أن يظل وضع الكاميرا متوقفًا أثناء إيقاف تشغيل الكاميرا وإعادة تشغيلها مرة أخرى. ننصحك أيضًا بشدة أن توفّر الكاميرا إشارة (مثل الضوء أو الصوت أو المؤشر على الشاشة) لإعلام المستخدمين بوضع Wi-Fi الحالي.
يجب أن تتضمن الكاميرا أيضًا بروتوكولات استكشاف (راجع الاكتشاف) يتم تنفيذها للتعامل مع الاتصال عندما تكون الكاميرا في وضع الإنترنت.
إعداد وضع الإنترنت
- يشغّل المستخدم الكاميرا. ويبدأ تشغيله في الوضع المباشر بسبب عدم إعداد وضع الإنترنت بعد.
- يتصل الجهاز الجوّال بشبكة Wi-Fi الكاميرا.
- يُنشئ التطبيق شهادة موقَّعة ذاتيًا.
- يُرسِل التطبيق الأمر
switchWifi
إلى الكاميرا باستخدام SSID لنقطة وصول Wi-Fi في البنية الأساسية التي ستحتاج الكاميرا إلى الاتصال بها، وكلمة المرور لنقطة الوصول هذه، والشهادة الموقَّعة ذاتيًا التي تستخدمها الكاميرا لمصادقة التطبيق لاحقًا.- يُرجى ملاحظة أنّ الكاميرا يجب أن تخزِّن بشكل آمن بيانات اعتماد شبكة Wi-Fi وشهادة التطبيق الموقَّعة ذاتيًا.
- ننصح بأن تخزّن الكاميرا عدة بيانات اعتماد Wi-Fi لأنّ الكاميرا قد تحتاج إلى الاتصال بنقاط وصول Wi-Fi مختلفة في البنية الأساسية. يتمثل الحد الأدنى المطلوب في أن تخزِّن الكاميرا أحدث بيانات اعتماد لشبكة Wi-Fi.
- تستجيب الكاميرا بشهادتها الموقَّعة ذاتيًا التي يستخدمها التطبيق لمصادقة الكاميرا لاحقًا.
- يمكن للمستخدم الآن التبديل بين الوضع المباشر ووضع الإنترنت مباشرةً من الكاميرا باستخدام زر تبديل فعلي مثلاً.
الاستكشاف
استكشاف كاميرات OSC هو بروتوكول يعتمد على الصفر. يجب أن تنفّذ الكاميرا العنونة المحلية للرابط IPv4 ويجب أن تتوافق مع مواصفات mDNS (نظام أسماء نطاقات البث المتعدد) وDNS-SD (اكتشاف الخدمة استنادًا إلى نظام أسماء النطاقات):
أسماء مثيلات الخدمة
بالنسبة إلى الجزء <Service>
من اسم مثيل الخدمة، يجب أن تستخدم كاميرات OSC
_osc._tcp
. بالنسبة إلى الجزء <Domain>
من اسم مثيل الخدمة، يجب أن تستخدم كاميرات OSC
local.
. لاحظ أن هناك .
لاحقة بعد local
.
سجل TXT
نطلب من الكاميرا إرسال أزواج المفتاح/القيمة التالية في سجلّ TXT:
txtvers
وty
وid
.
ملفات txtvers
للسماح بإجراء تعديلات على إصدار TXT في المستقبل، استخدِم زوج المفتاح/القيمة txtvers=1
.
تايلند
يجب إدخال اسم للكاميرا يسهل على المستخدم فهمه، على سبيل المثال ty=Google Street View Optimized Spherical Camera Model XYZ
id
تقديم معرّف فريد للكاميرا، مثلاً
id=A unique id of the camera
يجب أن تكون قيمة id
مماثلة لـ
cameraId
في الناتج /osc/info
.
إعلانات عن أخبار جديدة
يجب أن تنفِّذ الكاميرا خطوة الإعلان على النحو الموضَّح في مواصفات mDNS عند بدء تشغيل الكاميرا أو إيقافها. ومن المفترض أن يرسل الإشعار المقابل مرتين على الأقل مع فاصل مدته ثانية واحدة على الأقل.
التشغيل
عند بدء تشغيل الكاميرا، يجب إجراء الفحص والإعلان عن الخطوات كما هو موضّح في مواصفات mDNS. يجب إرسال سجلات SRV وPTR وTXT في هذه الحالة. ننصحك بتجميع كل السجلات في استجابة واحدة لنظام أسماء النطاقات إن أمكن. إذا لم يكن الأمر كذلك، يوصى بالترتيب التالي: سجلات SRV وPTR وTXT.
إيقاف التشغيل
عند إيقاف تشغيل الكاميرا، يجب محاولة إشعار جميع الأطراف المعنية من خلال
إرسال "حزمة وداعًا" مع TTL=0
كما هو موضّح في الفقرة 10.1
من مستندات mDNS.
شهادة موقعة ذاتيًا
يمكن للتطبيق والكاميرا استخدام الشهادات الموقَّعة ذاتيًا التي تمت مشاركتها أثناء إعداد وضع الإنترنت لمصادقة بعضهما البعض وإنشاء قناة آمنة لحماية البيانات المتبادلة، وذلك باستخدام المصادقة المتبادلة لطبقة المقابس الآمنة.
أثناء وضع الإنترنت، سيعمل التطبيق كخادم طبقة المقابس الآمنة (SSL) والكاميرا كعميل. ستتحقق الكاميرا من أن شهادة الخادم تطابق شهادة التطبيق الموقَّعة ذاتيًا، وسيتحقق التطبيق من تطابُق شهادة العميل مع شهادة الكاميرا.
يمكن استخدام أي مكتبة لطبقة المقابس الآمنة تتوافق مع المصادقة المتبادلة (مثل OpenSSL) لإنشاء اتصال طبقة المقابس الآمنة بين التطبيق والكاميرا أثناء وضع الإنترنت.
عملية تحميل جديدة
- إذا لم تكن الكاميرا في وضع الإنترنت، سيبدِّلها المستخدم إلى وضع الإنترنت. تتصل الكاميرا بشبكة Wi-Fi للبنية الأساسية باستخدام بيانات الاعتماد المخزّنة.
- يتصل الجهاز الجوّال أيضًا بشبكة Wi-Fi للبنية الأساسية ويكتشف الكاميرا.
- يتطلب ذلك من الكاميرا تنفيذ بروتوكول الاكتشاف المحلي mDNS/DNS-SD (راجع الاكتشاف).
- ليست هناك متطلبات محدّدة بشأن كيفية تنفيذها (mDNSResponder مرجع جيد).
- يمكن لكل من التطبيق والكاميرا إنشاء شهادات موقَّعة ذاتيًا ومشاركتها أثناء إعداد وضع الإنترنت. أثناء وضع الإنترنت، يصادق كل من التطبيق والكاميرا على بعضهما من خلال المصادقة المتبادلة لطبقة المقابس الآمنة.
- بعد اكتشاف الكاميرا، يتم تمكين اتصال العميل بها مباشرةً عبر الشبكة المحلية استنادًا إلى HTTP 1.1. تعتمد تنسيقات البيانات على JSON. قد تكون الطلبات طلبات GET أو POST.
- يطلب التطبيق من الكاميرا العثور على قائمة بالملفات باستخدام الأمر
listFiles
. - يبدأ التطبيق عملية التحميل مع توجيه الأمر
uploadFile
بتحميل صورة أو فيديو مباشرةً من الكاميرا إلى خادم "التجوّل الافتراضي". - يستطلع التطبيق إلى الكاميرا بشكل دوري لمعرفة مستوى تقدُّم التحميل باستخدام الأمر
status
.