<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sojielectronics.com/index.php?action=history&amp;feed=atom&amp;title=LIGO_PRO_Protocol</id>
	<title>LIGO PRO Protocol - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sojielectronics.com/index.php?action=history&amp;feed=atom&amp;title=LIGO_PRO_Protocol"/>
	<link rel="alternate" type="text/html" href="https://wiki.sojielectronics.com/index.php?title=LIGO_PRO_Protocol&amp;action=history"/>
	<updated>2026-06-10T16:30:39Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.sojielectronics.com/index.php?title=LIGO_PRO_Protocol&amp;diff=1389&amp;oldid=prev</id>
		<title>Admin: Initial Release [release]</title>
		<link rel="alternate" type="text/html" href="https://wiki.sojielectronics.com/index.php?title=LIGO_PRO_Protocol&amp;diff=1389&amp;oldid=prev"/>
		<updated>2026-06-10T04:53:56Z</updated>

		<summary type="html">&lt;p&gt;Initial Release [release]&lt;/p&gt;
&lt;a href=&quot;https://wiki.sojielectronics.com/index.php?title=LIGO_PRO_Protocol&amp;amp;diff=1389&amp;amp;oldid=1387&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://wiki.sojielectronics.com/index.php?title=LIGO_PRO_Protocol&amp;diff=1387&amp;oldid=prev</id>
		<title>Admin: Create page</title>
		<link rel="alternate" type="text/html" href="https://wiki.sojielectronics.com/index.php?title=LIGO_PRO_Protocol&amp;diff=1387&amp;oldid=prev"/>
		<updated>2026-06-10T04:53:10Z</updated>

		<summary type="html">&lt;p&gt;Create page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== General Introduction ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;dim&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Brief introduction to the protocol per IEC/IEEE standards for wireless data protocols.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What to fill in:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Protocol name and version&amp;#039;&amp;#039;&amp;#039; — full name + version number (vd: SOJI Protocol v2.1)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Purpose&amp;#039;&amp;#039;&amp;#039; — what data the protocol transmits and to whom&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Transport layer&amp;#039;&amp;#039;&amp;#039; — Bluetooth 5.4 BLE / WiFi / LoRa / proprietary RF&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Frequency &amp;amp; modulation&amp;#039;&amp;#039;&amp;#039; — 2.4 GHz GFSK / LoRa CSS / ...&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Operating mode&amp;#039;&amp;#039;&amp;#039; — Advertising-only (one-way broadcast) / Connection-based / Mesh&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Compatible devices&amp;#039;&amp;#039;&amp;#039; — list of sensors / receivers supporting this protocol&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Reference standards&amp;#039;&amp;#039;&amp;#039; — IEEE 802.15.4, Bluetooth Core 5.4, etc.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example structure:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Paragraph 1: &amp;quot;The [Protocol Name] is a [type] protocol defined by SOJI Electronics for [purpose]...&amp;quot;&lt;br /&gt;
* Paragraph 2: &amp;quot;It operates over [transport] at [frequency] and is supported by [device list]...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Optional sub-sections:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* === Protocol Stack === — layered diagram of protocol stack&lt;br /&gt;
* === Roles === — Broadcaster / Observer / Central / Peripheral&lt;br /&gt;
* === Security === — encryption, authentication, password protection&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Advertising Message Format ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;dim&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Byte-by-byte breakdown of the BLE advertising packet payload.&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;What to fill in:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Packet overview&amp;#039;&amp;#039;&amp;#039; — total packet length, manufacturer ID, structure summary&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Field table&amp;#039;&amp;#039;&amp;#039; — every field with offset, length, value, description&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example field breakdown table:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Offset !! Length (bytes) !! Field Name !! Value / Format !! Description&lt;br /&gt;
|-&lt;br /&gt;
| 0x00 || 1 || AD Length || 0xXX || Length of the advertising data structure&lt;br /&gt;
|-&lt;br /&gt;
| 0x01 || 1 || AD Type || 0xFF || Manufacturer Specific Data (per Bluetooth Core spec)&lt;br /&gt;
|-&lt;br /&gt;
| 0x02 || 2 || Company ID || 0xXXXX (LE) || SOJI Electronics SIG-assigned Company ID&lt;br /&gt;
|-&lt;br /&gt;
| 0x04 || 1 || Protocol ID || 0xXX || SOJI Protocol identifier&lt;br /&gt;
|-&lt;br /&gt;
| 0x05 || 1 || Frame Type || 0xXX || Frame type (data frame, status frame, ...)&lt;br /&gt;
|-&lt;br /&gt;
| 0x06 || N || Payload || ... || Sensor data payload (see Payload Structure below)&lt;br /&gt;
|-&lt;br /&gt;
| 0x06+N || 2 || CRC-16 || 0xXXXX || CRC-16/CCITT checksum over Offset 0x00 to 0x05+N&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Sub-sections to consider:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* === Packet Overview === — total length, byte order (LE/BE), encoding&lt;br /&gt;
* === Field Definitions === — main field table above&lt;br /&gt;
* === Payload Structure === — detailed payload fields (level, temperature, battery, RSSI, etc.) with units and scaling&lt;br /&gt;
* === Frame Types === — enumeration of frame types if multiple exist&lt;br /&gt;
* === CRC / Checksum === — algorithm (CRC-16/CCITT, polynomial, init value, XOR-out)&lt;br /&gt;
* === Example Raw Frame === — hex dump of a real advertising packet with field annotations&lt;br /&gt;
* === Decoding Pseudocode === — short code snippet (C / Python) showing how to parse a frame&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example raw frame block:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Raw bytes (hex):&lt;br /&gt;
  0E FF 5A A5 01 02 03 04 ...&lt;br /&gt;
&lt;br /&gt;
Decoded:&lt;br /&gt;
  AD Length    = 0x0E (14 bytes)&lt;br /&gt;
  AD Type      = 0xFF (Manufacturer Specific)&lt;br /&gt;
  Company ID   = 0xA55A (SOJI Electronics)&lt;br /&gt;
  Protocol ID  = 0x01 (SOJI Protocol)&lt;br /&gt;
  Frame Type   = 0x02 (Data Frame)&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example decoding pseudocode:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def decode_soji_frame(adv_data: bytes) -&amp;gt; dict:&lt;br /&gt;
    if adv_data[1] != 0xFF:&lt;br /&gt;
        return None&lt;br /&gt;
    company_id = int.from_bytes(adv_data[2:4], &amp;#039;little&amp;#039;)&lt;br /&gt;
    protocol_id = adv_data[4]&lt;br /&gt;
    frame_type = adv_data[5]&lt;br /&gt;
    payload = adv_data[6:-2]&lt;br /&gt;
    crc = int.from_bytes(adv_data[-2:], &amp;#039;little&amp;#039;)&lt;br /&gt;
    # ... validate CRC, parse payload&lt;br /&gt;
    return { ... }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot;&amp;gt;&lt;br /&gt;
== Related Documents ==&lt;br /&gt;
&amp;#039;&amp;#039;Cross-references to other documents.&amp;#039;&amp;#039;&lt;br /&gt;
{{RelatedDocuments}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Revision History ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;revision-history-auto&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;span class=&amp;quot;dim&amp;quot;&amp;gt;Loading revision history...&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:LIGO PRO ]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>