BEPI MMO Telemetry format notes
===============================

== Data frames format

Low level data frame header :

- Data [0] = 
	0x01 : First data
	0x04 : Final data
	0x02 : Normal data

With First data :
	data [13..17] = passno
	data [18] = sat ID

For other kind of data:

- Data [8..11] = len

Remaining data [12,..] are copied into read_pkt data structure:

- 64 bytes structure (including ad_tim)
- CCSDS header


== ADU : Application Data Unit

C'est une paquet de données au sens de l'instrument.

Elle doit fournir, dans la seconde entête CCSDS du TM packet les infos suivantes :

. Time (when ADU is generated)
. Packet ident (APID)
. Category (Section 7)
. ADU count (modulo 64)
. Packet sequence (pour chaque ADU)

== MMO TM packet

Division des ADU en plusieurs parties pour la transmission.

Pour chaque TM packet, la seconde entête CCSDS contient :

. Time (when ADU is generated)
. Packet ident (APID)
. Category (Section 7)
. ADU count (modulo 64)
. Packet sequence (pour chaque ADU)
. Packet sequence count (pour chaque ADU) modulo 65536
. ADU length


=== Décomposition

Si le paquet ADU contient dans un MMO TM packet,
l'entête est constituée :

* CCSDS header 1 (6 octets)
* CCSDS header 2 (7 octets)
* 1 octet vide

Si le paquet ADU doit être partagé en plusieurs MMO TM packet, l'entête est alors constituée de :

* CCSDS header 1 (6 octets)
* CCSDS header 2 (12 octets)

Les champs Packet Sequence Count (16 bits) et ADU lenth (24 bits)
sont ajoutés en fin de header 2

Cf. page 67 MMO Telemetry/Command Design Criteria


== Format des trames

=== CCSDS Header 1

.CCSDS Primary Header
[packetdiag, images/mmo.png]
----
{
	colwidth = 16
	colheight=2
	node_height = 30
	0-2 : Version
	3 : Type
	4: Sec header flag [rotate = left]
	5-15: APID
	16-17: Sequence flag
	18-31: Sequence count
	32-47: Packet length
}
----


=== CCSDS Header 2

== Node identification

.HK 
----
APID == 0x628 && categ == 33 && pkt_id == 0
----

.L MODE 
----
APID == 0x528 && categ == 51 && pkt_id == 2
----

.M MODE 
----
APID = 0x528 && categ = 61 && pkt_id == 3
----

.H MODE 
----
APID = 0x528 && categ in (71,81,91,101,111,121) && pkt_id in (5,6,7,8,9)
----

For each mode, pcs_flag field indicate:
----
11 : unique
01 : start
20 : continue
10 : stop
----

[[MEMDUMP]]
== Memory Dump data

We find some description of data APID in the following document:

link:documents/JAXA/JX-MMO-C0007_TCDC_v1_20100120.pdf[],

_See : Table 4.2.2 : Application Process ID for Telemetry_

APID is composed by several binary fields:

* Common use (3 bits)
----
100 : Report telemetry
101 : Mission telemetry
110 : HK telemetry
111 : Dump telemetry
----

* Node ID (5 bits)

----
Binary : Hexadecimal : Meaning 

00001 : 01 : DMC
00010 : 02 : PCD
00011 : 03 : MDP1  
00100 : 04 : MDP2
00101 : 05 : MEA1 
00110 : 06 : MEA2
00111 : 07 : MIA
01000 : 08 : MSA
01001 : 09 : HEP-e
01010 : 0A : HEP-i
01011 : OB : ENA
----

* Component extension bits (3 bits)

----
000 : Fixed
----

.Example :
----
MEA1 SC data : 101 00101 000 => 0x528
MEA1 HK data : 110 00101 000 => 0x628
MEA1 memDump : 111 00101 000 => 0x728

MEA2 SC data : 101 00110 000 => 0x530
MEA2 HK data : 110 00110 000 => 0x630
MEA2 memDump : 111 00110 000 => 0x730
----

Unfortunately, APID 0x728 and 0x730 doesn't work to download memory DUMP.

==== Memory dump

It seems that memory dump are only available for MDP1 and MDP2, not for usual instruments.

----
MDP1 memdump : 111 00011 000 => 0x718
MDP2 memdump : 111 00100 000 => 0x720
---- 

In order to obtain memory dump data for MEA, we have to download MDP1 Memory Dump (APID = 0x718),
which is handling MEA1 and MEA2 instruments.

Therefore, we have to parse memory dump content to isolate memory dump for each instrument,
using NODE_ID field (05 for MEA1, 06 for MEA2).

.Example
----
# Date    : 2012-355T19:17:30.382000Z
# APID    : 0718
# Seq     : 00
# Header  : 00 00 02 05 01 05 00 00 06 00 
# Time    : 01
# Node ID : 05
# Address : 00 00 06 00 
# 
00000600 : 02 1A 02 16 02 11 02 0D 02 09 02 05 02 00 01 FC 
00000610 : 01 F8 01 F4 01 EF 01 EB 01 E7 01 E3 01 DE 01 DA 
00000620 : 01 D6 01 D2 01 CE 01 C9 01 C5 01 C1 01 BD 01 B8 
00000630 : 01 B4 01 B0 01 AC 01 A7 01 A3 01 9F 01 9B 01 96 
00000640 : 01 92 01 8E 01 8A 01 86 01 81 01 7D 01 79 01 75 
00000650 : 01 70 01 6C 01 68 01 64 01 5F 01 5B 01 57 01 53 
00000660 : 01 4E 01 4A 01 46 01 42 01 3E 01 39 01 35 01 31 
00000670 : 01 2D 01 28 01 24 01 20 01 1C 01 17 01 13 01 0F 
00000680 : 01 0B 01 07 01 02 00 FE 00 FA 00 F6 00 F1 00 ED 
00000690 : 00 E9 00 E5 00 E0 00 DC 00 D8 00 D4 00 CF 00 CB 
000006A0 : 00 C7 00 C3 00 BF 00 BA 00 B6 00 B2 00 AE 00 A9 
000006B0 : 00 A5 00 A1 00 9D 00 98 00 94 00 90 00 8C 00 87 
000006C0 : 00 83 00 7F 00 7B 00 77 00 72 00 6E 00 6A 00 66 
000006D0 : 00 61 00 5D 00 59 00 55 00 50 00 4C 00 48 00 44 
000006E0 : 2E E3 2D E5 2C E7 2B E9 2A EB 29 EC 28 EE 27 F0 
000006F0 : 26 F2 25 F4 24 F6 23 F8 22 FA 21 FC 20 FE 20 00 
00000700 : A3 AD A0 F0 28 F7 BA 96 50 5F C4 75 4C D3 61 15 
00000710 : 86 D7 F1 27 E1 5A E6 5A 49 D6 AF 13 20 9D 19 6E 
00000720 : 30 8B A5 B2 C4 8A 01 03 32 78 7E B1 C0 AD D1 7A 
00000730 : 9A 44 09 90 97 E6 8C 15 07 4B A6 0D DC FD 69 53 
00000740 : D7 1E 68 40 16 D2 E1 2D D0 29 02 81 EA 4E C0 F9 
00000750 : C0 3F B7 37 95 D2 0B 17 71 67 BD A8 1A 22 1F 0C 
00000760 : BA 16 AB 87 82 1E 97 CC AF C2 DB C1 09 9A 48 94 
00000770 : 89 66 4A 6F 5B 6C F9 61 D6 42 7D 28 83 24 45 C3 
00000780 : CA D4 48 86 13 62 83 02 97 AF 10 F0 D0 AD 12 6A 
00000790 : 2F CC 51 32 8F 6B 2C AA D7 25 05 2E 07 7A 0B 3F 
000007A0 : FF 30 78 EF BB 35 D0 9D 9F FA 9A 18 7D 38 AA 61 
000007B0 : 62 7A BF 06 94 36 A9 41 B5 AA 91 86 C6 DE 2B F0 
000007C0 : D9 71 7F AD 74 93 55 EA 61 9D E7 06 00 87 28 5E 
000007D0 : B3 34 A0 DB A2 11 84 E8 B5 08 F2 C8 6D 6A 15 D9 
000007E0 : 70 25 10 98 9A 14 5B 03 5B 2B D5 A4 0F 84 D0 27 
000007F0 : B2 F2 E4 70 F9 20 DA A7 D5 D2 B4 08 CD 92 6A 77 
----