diff --git a/.github/actions/spelling/expect.txt b/.github/actions/spelling/expect.txt index 7ff0d21c..6589fe81 100644 --- a/.github/actions/spelling/expect.txt +++ b/.github/actions/spelling/expect.txt @@ -47,10 +47,12 @@ backport basestring batchmode baudrate +bcolors beforeunload BGR Biberstein bibtex +binascii bitmaps blockquote bmp @@ -67,8 +69,8 @@ cata cbl CCB CCFF -cdn Cdioux +cdn cdxoefg CFDG CFDP @@ -77,6 +79,7 @@ cgi Chainable chartjs checkbox +CHNG chrono classdocs classmethod @@ -96,8 +99,8 @@ combuffer commandsi concat config -configs configparser +configs Consolas cpp CPython @@ -129,9 +132,12 @@ deframed deframer deframing DEPRECATEDLIST +DESER +Deserial deserialization deserialize deserialized +deserializes deserializing dest dexc @@ -167,10 +173,14 @@ doxyrules doxysearch Doxywizard doy +dpi +dps +dpspec dropdown dropleft dropright dropup +Drv Dsh dst dts @@ -184,6 +194,7 @@ EINPROGRESS elif Emoji encodable +ENDC endcond endian endif @@ -192,6 +203,7 @@ endtime enqueuing entrypoint enum +Enumtype envvar errno errored @@ -217,9 +229,11 @@ FFCC FFFF fieldset figcaption +figsize filemode fileno filepath +filesize fileurl finditer Firefox @@ -279,6 +293,7 @@ hidecallergraph hidecallgraph hideinitializer hlp +HLTH Hookimpl hookspec hostname @@ -362,6 +377,7 @@ libc libclang libcrc libiconv +lineno Linting Linux listbox @@ -386,6 +402,7 @@ MAKEVAR marijnh matchobj mathjax +matplotlib maxcountryman maxdepth mcternan @@ -414,6 +431,7 @@ myproject namespace nargs navbar +nbytes Neue newname Nify @@ -436,6 +454,8 @@ odl odo oga ogg +OKBLUE +OKGREEN OMG onabort onerror @@ -468,10 +488,12 @@ php phtml pid pkgutil +pkts Pkts plainnat plantuml plist +plt plugin png PNGs @@ -479,6 +501,7 @@ popen posixpath PREDEF preds +prm procs PROGRAMLISTING progressbar @@ -493,8 +516,10 @@ ptr px py pyc +pydantic pylint pypi +pyplot pyserial pytest PYTHONHOME @@ -515,6 +540,7 @@ RCE RCVHWM RCVTIMEO RDWR +Readback readlines README readonly @@ -547,6 +573,7 @@ rst rtd rtf saba +savefig scm scrollable scrollbar @@ -662,8 +689,8 @@ ttl tts twbs txz -typedef'ed typedef +typedef'ed typehints typeof tzinfo @@ -679,6 +706,7 @@ UML undef undoc unicode +UNINIT unittest unpause updown @@ -688,7 +716,6 @@ uplinkvue uploader upto uri -URI url usec useconds @@ -720,6 +747,7 @@ vname VRuntime vue vw +Watney wav webbrowser webified @@ -743,14 +771,15 @@ xcode xhtml xhttp xl +xlabel xls xlsx +xmit xml xy yaml +ylabel yml zeromq zlib zmq -ZMQ -Zmq diff --git a/pyproject.toml b/pyproject.toml index c509c4f4..be454e93 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,6 +42,7 @@ dependencies = [ "Jinja2>=2.11.3", "openpyxl>=3.0.10", "pyserial>=3.5", + "pydantic>=2.6" ] [project.urls] @@ -58,6 +59,7 @@ Repository = "https://github.com/fprime-community/fprime-gds" [project.scripts] fprime-cli = "fprime_gds.executables.fprime_cli:main" fprime-seqgen = "fprime_gds.common.tools.seqgen:main" +fprime-dp-write = "fprime_gds.executables.data_product_writer:main" fprime-gds = "fprime_gds.executables.run_deployment:main" # For Pytest fixtures diff --git a/src/fprime_gds/executables/data_product_writer.py b/src/fprime_gds/executables/data_product_writer.py new file mode 100644 index 00000000..ac499eaa --- /dev/null +++ b/src/fprime_gds/executables/data_product_writer.py @@ -0,0 +1,935 @@ +# ------------------------------------------------------------------------------------------ +# Program: Data Product Writer +# +# Filename: data_product_writer.py +# +# Author: Garth Watney +# +# The "Data Product Writer" program is designed to interpret and convert binary data products +# from the F' flight software into JSON format. Each data product comprises multiple records, +# and the program's role is to deserialize this binary data using JSON dictionaries and +# header specifications, producing a readable JSON file. +# +# Argument Parsing: +# The program starts by parsing command-line arguments to obtain the path to the binary +# data product file. +# +# Reading JSON Dictionary: +# It reads the F' JSON dictionary file, which provides the necessary context for +# interpreting the binary data, catching any JSON decoding errors to handle malformed +# files gracefully. +# +# Data Validation: +# Before proceeding, the program checks for duplicate record identifiers within the +# JSON dictionary to ensure data integrity. +# +# +# Binary File Processing: +# The program opens the binary file for reading, initializes counters for tracking the +# total bytes read and a variable for calculating the CRC checksum. The header data is +# read first, followed by the individual records, each deserialized based on the JSON +# dictionary and header specification. +# +# CRC Validation: +# After processing the records, the program validates the CRC checksum to ensure the +# data's integrity has been maintained throughout the reading process. +# +# Exception Handling: +# Throughout its execution, the program is equipped to handle various exceptions, +# ranging from file not found scenarios to specific data-related errors like CRC +# mismatches or duplicate record IDs. Each exception triggers an error handling +# routine that provides informative feedback and terminates the program gracefully. +# +# Output Generation: +# Upon successful processing, the program writes the deserialized data to a JSON file. +# The output file's name is derived from the binary file's name with a change in its +# extension to `.json`, facilitating easy association between the input and output files. +# +# The "Data Product Writer" program is executed from the command line and requires specific +# arguments to function correctly. The primary argument it needs is the path to the binary +# data product file that will be processed. +# +# Usage: +# python data_product_writer.py +# +# Where: +# is the path to the binary file generated by the F' flight software that contains +# the data product to be deserialized and written to a JSON file. +# +# is the path to the json dictionary that is generated upon an F' build +# +# +# The program does not require any additional command-line options or flags for its basic +# operation. Once executed with the correct binary file path and with the necessary JSON +# files in place, it will perform the series of steps outlined previously, culminating in +# the generation of a JSON file with the same base name as the binary file but with a .json +# extension. +# +# ------------------------------------------------------------------------------------------ + +import struct +import json +import os +import sys +from typing import List, Dict, Union, ForwardRef +from pydantic import BaseModel, field_validator +from typing import List, Union +import argparse +from binascii import crc32 + +class bcolors: + HEADER = '\033[95m' + OKBLUE = '\033[94m' + OKGREEN = '\033[92m' + WARNING = '\033[93m' + FAIL = '\033[91m' + ENDC = '\033[0m' + BOLD = '\033[1m' + UNDERLINE = '\033[4m' + + +# This defines the data in the container header. When this is ultimately defined in the json dictionary, +# then this can be removed. +header_data = { + "typeDefinitions" : [ + { + "kind": "array", + "qualifiedName": "UserDataArray", + "size": 32, + "elementType": { + "name": "U8", + "kind": "integer", + "signed": False, + "size": 8 + } + }, + + { + "kind": "struct", + "qualifiedName": "timeStruct", + "members": { + "seconds": { + "type": { + "name": "U32", + "kind": "integer", + "signed": False, + "size": 32 + } + }, + "useconds": { + "type": { + "name": "U32", + "kind": "integer", + "signed": False, + "size": 32 + } + }, + "timeBase": { + "type": { + "name": "U16", + "kind": "integer", + "signed": False, + "size": 16 + } + }, + "context": { + "type": { + "name": "U8", + "kind": "integer", + "signed": False, + "size": 8 + } + } + } + } + ], + + "enums" : [ + ], + + "header": { + "PacketDescriptor": { + "type": { + "name": "U32", + "kind": "integer", + "signed": False, + "size": 32 + } + }, + "Id": { + "type": { + "name": "U32", + "kind": "integer", + "signed": False, + "size": 32 + } + }, + "Priority": { + "type": { + "name": "U32", + "kind": "integer", + "signed": False, + "size": 32 + } + }, + "TimeTag": { + "type": { + "name": "timeStruct", + "kind": "qualifiedIdentifier" + } + }, + "ProcTypes": { + "type": { + "name": "U8", + "kind": "integer", + "signed": False, + "size": 8 + } + }, + "UserData": { + "type": { + "name": "UserDataArray", + "kind": "qualifiedIdentifier" + } + }, + "DpState": { + "type": { + "name": "U8", + "kind": "integer", + "signed": False, + "size": 8 + } + }, + "DataSize": { + "type": { + "name": "U16", + "kind": "integer", + "signed": False, + "size": 16 + } + } + }, + + "headerHash": { + "type": { + "name": "U32", + "kind": "integer", + "signed": False, + "size": 32 + } + }, + + "dataId": { + "type": { + "name": "U32", + "kind": "integer", + "signed": False, + "size": 32 + } + }, + + "dataSize": { + "type": { + "name": "U16", + "kind": "integer", + "signed": False, + "size": 16 + } + }, + + "dataHash": { + "type": { + "name": "U32", + "kind": "integer", + "signed": False, + "size": 32 + } + } +} + +# Deserialize the binary file big endian +BIG_ENDIAN = ">" + + +# ------------------------------------------------------------------------------------------------------------------------- +# Function parse_args +# +# Description: +# Parse the input arguments either as passed into this function or on the command line +# ------------------------------------------------------------------------------------------------------------------------- +def parse_args(args=None): + parser = argparse.ArgumentParser(description='Data Product Writer.') + parser.add_argument('binFile', help='Data Product Binary file') + parser.add_argument('jsonDict', help='JSON Dictionary') + if args is None: + args = sys.argv[1:] + return parser.parse_args(args) + + +# ------------------------------------------------------------------------------------- +# These are common Pydantic classes that +# are used by both the dictionary json and the data product json +# +# ------------------------------------------------------------------------------------- + +class IntegerType(BaseModel): + name: str + kind: str + size: int + signed: bool + + @field_validator('kind') + def kind_qualifiedIdentifier(cls, v): + if v != "integer": + raise ValueError('Check the "kind" field') + return v + +class FloatType(BaseModel): + name: str + kind: str + size: int + + @field_validator('kind') + def kind_qualifiedIdentifier(cls, v): + if v != "float": + raise ValueError('Check the "kind" field') + return v + +class BoolType(BaseModel): + name: str + kind: str + size: int + + @field_validator('kind') + def kind_qualifiedIdentifier(cls, v): + if v != "bool": + raise ValueError('Check the "kind" field') + return v + +Type = ForwardRef('Type') +ArrayType = ForwardRef('ArrayType') + +class QualifiedType(BaseModel): + kind: str + name: str + + @field_validator('kind') + def kind_qualifiedIdentifier(cls, v): + if v != "qualifiedIdentifier": + raise ValueError('Check the "kind" field') + return v + +class StructMember(BaseModel): + type: Union[IntegerType, FloatType, BoolType, QualifiedType] + size: int = 1 + +class StructType(BaseModel): + kind: str + qualifiedName: str + members: Dict[str, StructMember] + + @field_validator('kind') + def kind_qualifiedIdentifier(cls, v): + if v != "struct": + raise ValueError('Check the "kind" field') + return v + +class ArrayType(BaseModel): + kind: str + qualifiedName: str + size: int + elementType: Union[StructType, ArrayType, IntegerType, FloatType, QualifiedType] + + @field_validator('kind') + def kind_qualifiedIdentifier(cls, v): + if v != "array": + raise ValueError('Check the "kind" field') + return v + +class EnumeratedConstant(BaseModel): + name: str + value: int + + +class EnumType(BaseModel): + kind: str + qualifiedName: str + #representationType: RepresentationType + representationType: IntegerType + enumeratedConstants: List[EnumeratedConstant] + + @field_validator('kind') + def kind_qualifiedIdentifier(cls, v): + if v != "enum": + raise ValueError('Check the "kind" field') + return v + + +class Type(BaseModel): + type: Union[StructType, ArrayType, IntegerType, FloatType, BoolType, QualifiedType] + +class RecordStruct(BaseModel): + name: str + type: Union[StructType, ArrayType, IntegerType, FloatType, BoolType, QualifiedType] + array: bool + id: int + annotation: str + +class ContainerStruct(BaseModel): + name: str + id: int + defaultPriority: int + annotation: str + +# ------------------------------------------------------------------------------------- +# These Pydantic classes define the FPRIME_DICTIONARY_FILE +# +# ------------------------------------------------------------------------------------- + +class FprimeDict(BaseModel): + metadata: Dict[str, Union[str, List[str]]] + typeDefinitions: List[Union[ArrayType, StructType, EnumType]] + records: List[RecordStruct] + containers: List[ContainerStruct] + +# ------------------------------------------------------------------------------------- +# This Pydantic class defines the data product json +# +# ------------------------------------------------------------------------------------- + +class DPHeader(BaseModel): + typeDefinitions: List[Union[ArrayType, StructType, EnumType]] + header: Dict[str, Type] + headerHash: Type + dataId: Type + dataSize: Type + dataHash: Type + +ArrayType.model_rebuild() +StructType.model_rebuild() +Type.model_rebuild() + +TypeKind = Union[StructType, ArrayType, IntegerType, FloatType, EnumType, BoolType, QualifiedType] +TypeDef = Union[ArrayType, StructType] + +# Map the JSON types to struct format strings +type_mapping = { + 'U8': 'B', # Unsigned 8-bit integer + 'I8': 'b', # Signed 8-bit integer + 'U16': 'H', # Unsigned 16-bit integer + 'I16': 'h', # Signed 16 bit integer + 'U32': 'I', # Unsigned 32-bit integer + 'I32': 'i', # Signed 32-bit integer + 'I64': 'q', # Signed 64-bit integer + 'U64': 'Q', # Unsigned 64-bit integer + 'F32': 'f', # 32-bit float + 'F64': 'd', # 64-bit float + 'bool': '?' # An 8 bit boolean + # Add more mappings as needed +} + +# -------------------------------------------------------------------------------------------------- +# class RecordIDNotFound +# +# Description: +# Custom exception class for signaling the absence of a specified record ID in a JSON dictionary. +# It stores the missing record ID and provides a descriptive error message when invoked. +# +# Attributes: +# recordId: The missing record ID. +# +# Methods: +# __init__(self, recordId): Initializes the exception with the missing record ID. +# __str__(self): Returns an error message indicating the missing record ID. +# --------------------------------------------------------------------------------------------------- + +class RecordIDNotFound(Exception): + + def __init__(self, recordId): + self.recordId = recordId + + def __str__(self): + return f"Record ID {self.recordId} was not found in the JSON dictionary" + +# ---------------------------------------------------------------------------------------------------------------- +# class DictionaryError +# +# Description: +# Custom exception class for signaling errors while parsing a JSON dictionary file. +# It stores the file name and the line number where the error occurred, providing context in the error message. +# +# Attributes: +# jsonFile: The name of the JSON file being parsed. +# lineNo: The line number in the file where the error was detected. +# +# Methods: +# __init__(self, jsonFile, lineNo): Initializes the exception with the JSON file name and the line number. +# __str__(self): Returns an error message indicating the file and line number where the error occurred. +# ---------------------------------------------------------------------------------------------------------------- + +class DictionaryError(Exception): + + def __init__(self, jsonFile, lineNo): + self.jsonFile = jsonFile + self.lineNo = lineNo + + def __str__(self): + return f"DictionaryError parsing {self.jsonFile}, line number: {self.lineNo}" + +# ------------------------------------------------------------------------------------------------------------------- +# class CRCError +# +# Description: +# Custom exception class for signaling CRC hash mismatches during data validation. +# It specifies whether the error occurred in the header or data, the expected CRC value, and the calculated CRC value. +# +# Attributes: +# headerOrData: Indicates whether the mismatch occurred in the header or the data section. +# expected: The expected CRC value. +# calculated: The calculated CRC value that did not match the expected value. +# +# Methods: +# __init__(self, headerOrData, expected, calculated): Initializes the exception with details of the mismatch. +# __str__(self): Returns an error message detailing the mismatch with expected and calculated CRC values. +# -------------------------------------------------------------------------------------------------------------------- + +class CRCError(Exception): + + def __init__(self, headerOrData, expected, calculated): + self.headerOrData = headerOrData + self.expected = expected + self.calculated = calculated + + def __str__(self): + return f"CRC Hash mismatch for {self.headerOrData}: Expected {self.expected:#x}, Calculated {self.calculated:#x}" + +# -------------------------------------------------------------------------------------------------------------------- +# class DuplicateRecordID +# +# Description: +# Custom exception class for indicating the presence of a duplicate record identifier in a JSON dictionary. +# It stores the duplicate identifier and provides a descriptive error message when invoked. +# +# Attributes: +# identifier: The duplicate record identifier that triggered the exception. +# +# Methods: +# __init__(self, identifier): Initializes the exception with the duplicate identifier. +# __str__(self): Returns an error message indicating the duplicate record identifier. +# ---------------------------------------------------------------------------------------------------------------------- +class DuplicateRecordID(Exception): + + def __init__(self, identifier): + self.identifier = identifier + + def __str__(self): + return f"In the Dictionary JSON there is a duplicate Record identifier: {self.identifier}" + +# -------------------------------------------------------------------------------------------------------------------- +# class DataProductWriter +# +# Description: +# This is the main class that processes the data. It is a container for managing global variables +# +# -------------------------------------------------------------------------------------------------------------------- +class DataProductWriter: + def __init__(self, jsonDict, binaryFileName): + self.jsonDict = jsonDict + self.binaryFileName = binaryFileName + self.totalBytesRead = 0 + self.calculatedCRC = 0 + + + # ---------------------------------------------------------------------------------------------- + # Function: read_and_deserialize + # + # Description: + # Reads specified bytes from a binary file, updates CRC, increments byte count, + # and deserializes bytes into an integer. + # + # Parameters: + # nbytes (int): Number of bytes to read. + # intType (IntegerType): Integer type for deserialization. + # + # Returns: + # int: Deserialized integer. + # + # Exceptions: + # IOError: If reading specified bytes fails. + # KeyError: If intType is unrecognized in type_mapping. + # ---------------------------------------------------------------------------------------------- + + def read_and_deserialize(self, nbytes: int, intType: IntegerType) -> int: + + bytes_read = self.binaryFile.read(nbytes) + if len(bytes_read) != nbytes: + raise IOError(f"Tried to read {nbytes} bytes from the binary file, but failed.") + + self.calculatedCRC = crc32(bytes_read, self.calculatedCRC) & 0xffffffff + self.totalBytesRead += nbytes + + try: + format_str = f'{BIG_ENDIAN}{type_mapping[intType.name]}' + except KeyError: + raise KeyError(f"Unrecognized JSON Dictionary Type: {intType}") + data = struct.unpack(format_str, bytes_read)[0] + + + return data + + # ----------------------------------------------------------------------------------------------------------------------- + # Function: get_struct_type + # + # Description: + # Searches for a structure with a matching identifier in a list of type definitions + # and returns the matching structure if found. + # + # Parameters: + # typeList (List[TypeDef]): A list of type definitions to search through. + # identifier (str): The identifier to match against the qualifiedName attribute of each structure. + # + # Returns: + # TypeDef: The structure that matches the identifier, or None if no match is found. + # + # Exceptions: + # No explicit exceptions are raised by this function. + # ----------------------------------------------------------------------------------------------------------------------- + + def get_struct_type(self, typeList: List[TypeDef], identifier: str) -> TypeDef: + + for structure in typeList: + if structure.qualifiedName == identifier: + return structure + + return None + + # ----------------------------------------------------------------------------------------------------------------------- + # Function: read_field + # + # Description: + # Reads and deserializes a field from a binary file, determining the field's size and type + # based on the provided configuration, which may be an integer, float, or boolean. + # + # Parameters: + # field_config (Union[IntegerType, FloatType, BoolType]): Configuration specifying the type and size + # of the field to read. + # + # Returns: + # Union[int, float, bool]: The deserialized value of the field, which can be an integer, float, or boolean. + # + # Exceptions: + # AssertionError: If the field_config is not an IntegerType, FloatType, or BoolType. + # ----------------------------------------------------------------------------------------------------------------------- + + def read_field(self, field_config: Union[IntegerType, FloatType, BoolType]) -> Union[int, float, bool]: + + if type(field_config) is IntegerType: + sizeBytes = field_config.size // 8 + + elif type(field_config) is FloatType: + sizeBytes = field_config.size // 8 + + elif type(field_config) is BoolType: + sizeBytes = field_config.size // 8 + + else: + assert False, "Unsupported typeKind encountered" + + return self.read_and_deserialize(sizeBytes, field_config) + + + # ----------------------------------------------------------------------------------------------------------------------- + # Function: get_struct_item + # + # Description: + # This function recursively reads and processes a field from a binary file, adding it to a parent dictionary. + # The process varies depending on the field's type: + # - For basic types (IntegerType, FloatType, BoolType), it directly reads and assigns the value. + # - For EnumType, it reads the value, finds the corresponding enum identifier, and assigns it. + # - For ArrayType, it creates a list, iteratively fills it with elements read recursively, and assigns the list. + # - For StructType, it constructs a nested dictionary by recursively processing each struct member. + # - For QualifiedType, it resolves the actual type from typeList and recursively processes the field. + # This approach allows the function to handle complex, nested data structures by adapting to the field's type, + # ensuring each is read and stored appropriately in the parent dictionary. + # + # Parameters: + # field_name (str): The name of the field to be read and added to the dictionary. + # typeKind (TypeKind): The type information of the field, determining how it should be read. + # typeList (List[TypeDef]): A list of type definitions, used for resolving qualified types. + # parent_dict (Dict[str, int]): The dictionary to which the read field value will be added. + # + # Returns: + # None: The function does not return a value but modifies parent_dict in place. + # + # Exceptions: + # AssertionError: If an unsupported typeKind is encountered. + + # + # ----------------------------------------------------------------------------------------------------------------------- + + def get_struct_item(self, field_name: str, typeKind: TypeKind, typeList: List[TypeDef], parent_dict: Dict[str, int]): + + if isinstance(typeKind, IntegerType): + parent_dict[field_name] = self.read_field(typeKind) + + elif isinstance(typeKind, FloatType): + parent_dict[field_name] = self.read_field(typeKind) + + elif isinstance(typeKind, BoolType): + parent_dict[field_name] = self.read_field(typeKind) + + + elif isinstance(typeKind, EnumType): + value = self.read_field(typeKind.representationType) + enum_mapping = typeKind.enumeratedConstants + reverse_mapping = {enum.value: enum.name for enum in enum_mapping} + parent_dict[field_name] = reverse_mapping[value] + + + elif isinstance(typeKind, ArrayType): + array_list = [] + for item in range(typeKind.size): + element_dict = {} + self.get_struct_item("arrayElement", typeKind.elementType, typeList, element_dict) + array_list.append(element_dict["arrayElement"]) + parent_dict[field_name] = array_list + + elif isinstance(typeKind, StructType): + array_list = [] + for key, member in typeKind.members.items(): + for i in range(member.size): + element_dict = {} + self.get_struct_item(key, member.type, typeList, element_dict) + #array_list.append(element_dict[key]) + array_list.append(element_dict) + parent_dict[field_name] = array_list + + elif isinstance(typeKind, QualifiedType): + qualType = self.get_struct_type(typeList, typeKind.name) + self.get_struct_item(field_name, qualType, typeList, parent_dict) + + else: + assert False, "Unsupported typeKind encountered" + + + # ----------------------------------------------------------------------------------------------------------------------- + # Function: get_header_info + # + # Description: + # Extracts header information from a given DPHeader object, populating and returning a dictionary with the data. + # Iterates over header fields, reading each and updating a root dictionary with the field values. After processing all fields, + # it reads and compares the header hash with a computed CRC value to verify data integrity. If the CRC check fails, it raises + # a CRCError. This function demonstrates a pattern of custom exceptions to manage and validate + # binary data parsing. + # + # Parameters: + # headerJSON (DPHeader): The DPHeader object containing header information and type definitions. + # + # Returns: + # Dict[str, int]: A dictionary populated with the header fields and their corresponding values. + # + # Exceptions: + # CRCError: Raised if the computed CRC does not match the expected header hash value. + # ----------------------------------------------------------------------------------------------------------------------- + + def get_header_info(self, headerJSON: DPHeader) -> Dict[str, int]: + + header_fields = headerJSON.header + rootDict = {} + + for field_name, field_info in header_fields.items(): + self.get_struct_item(field_name, field_info.type, headerJSON.typeDefinitions, rootDict) + + computedHash = self.calculatedCRC + rootDict['headerHash'] = self.read_field(headerJSON.headerHash.type) + self.calculatedCRC = 0 + + if rootDict['headerHash'] != computedHash: + raise CRCError("Header", rootDict['headerHash'], computedHash) + + return rootDict + + # ------------------------------------------------------------------------------------------ + # Function: get_record_data + # + # Description: + # Retrieves and processes the record data based on a given header and dictionary + # definition. The function first reads the 'dataId' from the header to identify the + # relevant record. It then processes the record's data, handling both scalar values and + # arrays by reading each item according to its type. For arrays, it also reads the + # 'dataSize' from the header to determine the number of items to process. + # + # Parameters: + # - headerJSON (DPHeader): An object containing the header information, including + # identifiers and sizes for the data to be processed. + # - dictJSON (FprimeDict): An object containing definitions for records and types, + # which are used to process the data correctly. + # + # Returns: + # Dict[str, int]: A dictionary with the processed data, including 'dataId', optionally + # 'size' for arrays, and the data itself. For arrays, the data is indexed by its position + # within the array. + + # ------------------------------------------------------------------------------------------ + + def get_record_data(self, headerJSON: DPHeader, dictJSON: FprimeDict) -> Dict[str, int]: + rootDict = {} + # Go through all the Records and find the one that matches recordId + rootDict['dataId'] = self.read_field(headerJSON.dataId.type) + for record in dictJSON.records: + if record.id == rootDict['dataId']: + print(f'Processing Record ID {record.id}') + if record.array: + dataSize = self.read_field(headerJSON.dataSize.type) + rootDict['size'] = dataSize + array_data = [] + for i in range(dataSize): + element_dict = {} + self.get_struct_item("arrayElement", record.type, dictJSON.typeDefinitions, element_dict) + array_data.append(element_dict["arrayElement"]) + rootDict['data'] = array_data + else: + # For non-array records, directly use 'data' as the key. + self.get_struct_item("data", record.type, dictJSON.typeDefinitions, rootDict) + + return rootDict + raise RecordIDNotFound(rootDict['dataId']) + + + + # -------------------------------------------------------------------------------------------------------------------- + # Function handleException + # + # Description: + # Function for handling exceptions by displaying an error message and terminating the program. + # It displays the provided exception message with color-coded output for emphasis. + # After displaying the messages, it immediately exits the program, halting further execution. + # + # Parameters: + # msg (str): The specific error message to be displayed. + # + # Returns: + # None: This function does not return a value. It terminates the program execution with sys.exit(). + # + # Exceptions: + # No explicit exceptions are raised by this function, but it triggers the program's termination. + # ----------------------------------------------------------------------------------------------------------------- + def handleException(self, msg): + errorMessage = f"*** Error in processing: " + print(bcolors.FAIL) + print(errorMessage) + print(bcolors.WARNING) + print(msg) + print(bcolors.ENDC) + sys.exit() + + + # ------------------------------------------------------------------------------------------------------------------------- + # Function check_record_data + # + # Description: + # Validates record data in a given dictionary JSON object by ensuring there are no duplicate record identifiers. + # Iterates through the records in the dictionary, checking each record's identifier against a set that + # tracks unique identifiers. If a duplicate identifier is detected, a DuplicateRecordID exception is raised. + # + # Parameters: + # dictJSON (FprimeDict): The dictionary JSON object containing records to be validated. + # + # Returns: + # None: This function does not return a value. It either completes successfully or raises an exception. + # + # Exceptions: + # DuplicateRecordID: Raised if a duplicate record identifier is found in the dictionary JSON object. + + # ----------------------------------------------------------------------------------------------------------------------- + def check_record_data(self, dictJSON: FprimeDict): + idSet = set() + for record in dictJSON.records: + if record.id in idSet: + raise DuplicateRecordID(record.id) + else: + idSet.add(record.id) + + + + # ------------------------------------------------------------------------------------------------------------------------- + # Function process + # + # Description: + # Main processing + # ------------------------------------------------------------------------------------------------------------------------- + def process(self): + + try: + + # Read the F prime JSON dictionary + print(f"Parsing {self.jsonDict}...") + try: + with open(self.jsonDict, 'r') as fprimeDictFile: + dictJSON = FprimeDict(**json.load(fprimeDictFile)) + except json.JSONDecodeError as e: + raise DictionaryError(self.jsonDict, e.lineno) + + self.check_record_data(dictJSON) + + headerJSON = DPHeader(**header_data) + + with open(self.binaryFileName, 'rb') as self.binaryFile: + + # Read the header data up until the Records + headerData = self.get_header_info(headerJSON) + + # Read the total data size + dataSize = headerData['DataSize'] + + # Restart the count of bytes read + self.totalBytesRead = 0 + + recordList = [headerData] + + while self.totalBytesRead < dataSize: + + recordData = self.get_record_data(headerJSON, dictJSON) + recordList.append(recordData) + + computedCRC = self.calculatedCRC + # Read the data checksum + headerData['dataHash'] = self.read_field(headerJSON.dataHash.type) + + if computedCRC != headerData['dataHash']: + raise CRCError("Data", headerData['dataHash'], computedCRC) + + + except (FileNotFoundError, RecordIDNotFound, IOError, KeyError, json.JSONDecodeError, + DictionaryError, CRCError, DuplicateRecordID) as e: + self.handleException(e) + + except (ValueError) as e: + error = e.errors()[0] + msg = f'ValueError in JSON file {error["loc"]}: {error["msg"]}' + self.handleException(msg) + + + # Output the generated json to a file + baseName = os.path.basename(self.binaryFileName) + outputJsonFile = os.path.splitext(baseName)[0] + '.json' + if outputJsonFile.startswith('._'): + outputJsonFile = outputJsonFile.replace('._', '') + with open(outputJsonFile, 'w') as file: + json.dump(recordList, file, indent=2) + + print(f'Output data generated in {outputJsonFile}') + + +# ------------------------------------------------------------------------------------------ +# main program +# +# ------------------------------------------------------------------------------------------ +def main(): + args = parse_args() + DataProductWriter(args.jsonDict, args.binFile).process() + +if __name__ == "main": + sys.exit(main()) + + diff --git a/test/fprime_gds/executables/.gitignore b/test/fprime_gds/executables/.gitignore new file mode 100644 index 00000000..b1ed06c8 --- /dev/null +++ b/test/fprime_gds/executables/.gitignore @@ -0,0 +1 @@ +JSONoutput diff --git a/test/fprime_gds/executables/dp_writer_data/dictionary.json b/test/fprime_gds/executables/dp_writer_data/dictionary.json new file mode 100644 index 00000000..a6e290a2 --- /dev/null +++ b/test/fprime_gds/executables/dp_writer_data/dictionary.json @@ -0,0 +1,9934 @@ +{ + "metadata" : { + "deploymentName" : "Ref", + "projectVersion" : "4b6d29dc1", + "frameworkVersion" : "4b6d29dc1", + "libraryVersions" : [ + ], + "dictionarySpecVersion" : "1.0.0" + }, + "typeDefinitions" : [ + { + "kind" : "struct", + "qualifiedName" : "Ref.PacketStat", + "members" : { + "BuffRecv" : { + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "index" : 0, + "annotation" : "Number of buffers received" + }, + "BuffErr" : { + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "index" : 1, + "annotation" : "Number of buffers received with errors" + }, + "PacketStatus" : { + "type" : { + "name" : "Ref.PacketRecvStatus", + "kind" : "qualifiedIdentifier" + }, + "index" : 2, + "annotation" : "Packet Status" + } + }, + "default" : { + "BuffRecv" : 0, + "BuffErr" : 0, + "PacketStatus" : "Ref.PacketRecvStatus.PACKET_STATE_NO_PACKETS" + }, + "annotation" : "Some Packet Statistics" + }, + { + "kind" : "struct", + "qualifiedName" : "Svc.DpTool.ArrayData", + "members" : { + "arrField" : { + "type" : { + "name" : "U16", + "kind" : "integer", + "size" : 16, + "signed" : false + }, + "index" : 0, + "size" : 10 + } + }, + "default" : { + "arrField" : 0 + } + }, + { + "kind" : "array", + "qualifiedName" : "Ref.SignalPairSet", + "size" : 4, + "elementType" : { + "name" : "Ref.SignalPair", + "kind" : "qualifiedIdentifier" + }, + "default" : [ + { + "time" : 0.0, + "value" : 0.0 + }, + { + "time" : 0.0, + "value" : 0.0 + }, + { + "time" : 0.0, + "value" : 0.0 + }, + { + "time" : 0.0, + "value" : 0.0 + } + ] + }, + { + "kind" : "struct", + "qualifiedName" : "Svc.DpTool.Complex", + "members" : { + "f1" : { + "type" : { + "name" : "Svc.DpTool.Data", + "kind" : "qualifiedIdentifier" + }, + "index" : 0, + "annotation" : "A struct in the struct" + }, + "f2" : { + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "index" : 1, + "annotation" : "A simple U32 field" + } + }, + "default" : { + "f1" : { + "u16Field" : 0 + }, + "f2" : 0 + }, + "annotation" : "Data for a ComplexRecord" + }, + { + "kind" : "enum", + "qualifiedName" : "Fw.Wait", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "WAIT", + "value" : 0 + }, + { + "name" : "NO_WAIT", + "value" : 1 + } + ], + "default" : "Fw.Wait.WAIT", + "annotation" : "Wait or don't wait for something" + }, + { + "kind" : "enum", + "qualifiedName" : "Svc.CmdSequencer.FileReadStage", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "READ_HEADER", + "value" : 0 + }, + { + "name" : "READ_HEADER_SIZE", + "value" : 1 + }, + { + "name" : "DESER_SIZE", + "value" : 2 + }, + { + "name" : "DESER_NUM_RECORDS", + "value" : 3 + }, + { + "name" : "DESER_TIME_BASE", + "value" : 4 + }, + { + "name" : "DESER_TIME_CONTEXT", + "value" : 5 + }, + { + "name" : "READ_SEQ_CRC", + "value" : 6 + }, + { + "name" : "READ_SEQ_DATA", + "value" : 7 + }, + { + "name" : "READ_SEQ_DATA_SIZE", + "value" : 8 + } + ], + "default" : "Svc.CmdSequencer.FileReadStage.READ_HEADER", + "annotation" : "The stage of the file read operation" + }, + { + "kind" : "enum", + "qualifiedName" : "Fw.ParamValid", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "UNINIT", + "value" : 0 + }, + { + "name" : "VALID", + "value" : 1 + }, + { + "name" : "INVALID", + "value" : 2 + }, + { + "name" : "DEFAULT", + "value" : 3 + } + ], + "default" : "Fw.ParamValid.UNINIT", + "annotation" : "Enum representing parameter validity" + }, + { + "kind" : "enum", + "qualifiedName" : "Svc.ActiveLogger.Enabled", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "ENABLED", + "value" : 0, + "annotation" : "Enabled state" + }, + { + "name" : "DISABLED", + "value" : 1, + "annotation" : "Disabled state" + } + ], + "default" : "Svc.ActiveLogger.Enabled.ENABLED", + "annotation" : "Enabled and disabled state" + }, + { + "kind" : "enum", + "qualifiedName" : "Ref.Choice", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "ONE", + "value" : 0 + }, + { + "name" : "TWO", + "value" : 1 + }, + { + "name" : "RED", + "value" : 2 + }, + { + "name" : "BLUE", + "value" : 3 + } + ], + "default" : "Ref.Choice.ONE", + "annotation" : "Enumeration type for use later" + }, + { + "kind" : "struct", + "qualifiedName" : "Ref.SignalPair", + "members" : { + "time" : { + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "index" : 0, + "format" : "{f}" + }, + "value" : { + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "index" : 1, + "format" : "{f}" + } + }, + "default" : { + "time" : 0.0, + "value" : 0.0 + } + }, + { + "kind" : "enum", + "qualifiedName" : "Svc.PrmDb.PrmReadError", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "OPEN", + "value" : 0 + }, + { + "name" : "DELIMITER", + "value" : 1 + }, + { + "name" : "DELIMITER_SIZE", + "value" : 2 + }, + { + "name" : "DELIMITER_VALUE", + "value" : 3 + }, + { + "name" : "RECORD_SIZE", + "value" : 4 + }, + { + "name" : "RECORD_SIZE_SIZE", + "value" : 5 + }, + { + "name" : "RECORD_SIZE_VALUE", + "value" : 6 + }, + { + "name" : "PARAMETER_ID", + "value" : 7 + }, + { + "name" : "PARAMETER_ID_SIZE", + "value" : 8 + }, + { + "name" : "PARAMETER_VALUE", + "value" : 9 + }, + { + "name" : "PARAMETER_VALUE_SIZE", + "value" : 10 + } + ], + "default" : "Svc.PrmDb.PrmReadError.OPEN", + "annotation" : "Parameter read error" + }, + { + "kind" : "array", + "qualifiedName" : "Ref.ManyChoices", + "size" : 2, + "elementType" : { + "name" : "Ref.Choice", + "kind" : "qualifiedIdentifier" + }, + "default" : [ + "Ref.Choice.ONE", + "Ref.Choice.ONE" + ], + "annotation" : "Enumeration array" + }, + { + "kind" : "enum", + "qualifiedName" : "Fw.DeserialStatus", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "OK", + "value" : 0 + }, + { + "name" : "BUFFER_EMPTY", + "value" : 3, + "annotation" : "Deserialization buffer was empty when trying to read data" + }, + { + "name" : "FORMAT_ERROR", + "value" : 4, + "annotation" : "Deserialization data had incorrect values (unexpected data types)" + }, + { + "name" : "SIZE_MISMATCH", + "value" : 5, + "annotation" : "Data was left in in the buffer, but not enough to deserialize" + }, + { + "name" : "TYPE_MISMATCH", + "value" : 6, + "annotation" : "Deserialized type ID didn't match" + } + ], + "default" : "Fw.DeserialStatus.OK", + "annotation" : "Deserialization status" + }, + { + "kind" : "enum", + "qualifiedName" : "Ref.PacketRecvStatus", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "PACKET_STATE_NO_PACKETS", + "value" : 0 + }, + { + "name" : "PACKET_STATE_OK", + "value" : 1 + }, + { + "name" : "PACKET_STATE_ERRORS", + "value" : 3, + "annotation" : "Receiver has seen errors" + } + ], + "default" : "Ref.PacketRecvStatus.PACKET_STATE_NO_PACKETS", + "annotation" : "Packet receive status" + }, + { + "kind" : "struct", + "qualifiedName" : "Svc.DpTool.Data", + "members" : { + "u16Field" : { + "type" : { + "name" : "U16", + "kind" : "integer", + "size" : 16, + "signed" : false + }, + "index" : 0, + "annotation" : "A U16 field" + } + }, + "default" : { + "u16Field" : 0 + }, + "annotation" : "Data for a DataRecord" + }, + { + "kind" : "struct", + "qualifiedName" : "Ref.ChoicePair", + "members" : { + "firstChoice" : { + "type" : { + "name" : "Ref.Choice", + "kind" : "qualifiedIdentifier" + }, + "index" : 0, + "annotation" : "The first choice to make" + }, + "secondChoice" : { + "type" : { + "name" : "Ref.Choice", + "kind" : "qualifiedIdentifier" + }, + "index" : 1, + "annotation" : "The second choice to make" + } + }, + "default" : { + "firstChoice" : "Ref.Choice.ONE", + "secondChoice" : "Ref.Choice.ONE" + }, + "annotation" : "Structure of enums" + }, + { + "kind" : "enum", + "qualifiedName" : "Svc.PrmDb.PrmWriteError", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "OPEN", + "value" : 0 + }, + { + "name" : "DELIMITER", + "value" : 1 + }, + { + "name" : "DELIMITER_SIZE", + "value" : 2 + }, + { + "name" : "RECORD_SIZE", + "value" : 3 + }, + { + "name" : "RECORD_SIZE_SIZE", + "value" : 4 + }, + { + "name" : "PARAMETER_ID", + "value" : 5 + }, + { + "name" : "PARAMETER_ID_SIZE", + "value" : 6 + }, + { + "name" : "PARAMETER_VALUE", + "value" : 7 + }, + { + "name" : "PARAMETER_VALUE_SIZE", + "value" : 8 + } + ], + "default" : "Svc.PrmDb.PrmWriteError.OPEN", + "annotation" : "Parameter write error" + }, + { + "kind" : "array", + "qualifiedName" : "Ref.TooManyChoices", + "size" : 2, + "elementType" : { + "name" : "Ref.ManyChoices", + "kind" : "qualifiedIdentifier" + }, + "default" : [ + [ + "Ref.Choice.ONE", + "Ref.Choice.ONE" + ], + [ + "Ref.Choice.ONE", + "Ref.Choice.ONE" + ] + ], + "annotation" : "Array of array" + }, + { + "kind" : "struct", + "qualifiedName" : "Ref.SignalInfo", + "members" : { + "type" : { + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "index" : 0 + }, + "history" : { + "type" : { + "name" : "Ref.SignalSet", + "kind" : "qualifiedIdentifier" + }, + "index" : 1 + }, + "pairHistory" : { + "type" : { + "name" : "Ref.SignalPairSet", + "kind" : "qualifiedIdentifier" + }, + "index" : 2 + } + }, + "default" : { + "type" : "Ref.SignalType.TRIANGLE", + "history" : [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "pairHistory" : [ + { + "time" : 0.0, + "value" : 0.0 + }, + { + "time" : 0.0, + "value" : 0.0 + }, + { + "time" : 0.0, + "value" : 0.0 + }, + { + "time" : 0.0, + "value" : 0.0 + } + ] + } + }, + { + "kind" : "struct", + "qualifiedName" : "Ref.ScalarStruct", + "members" : { + "u32" : { + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "index" : 0 + }, + "f64" : { + "type" : { + "name" : "F64", + "kind" : "float", + "size" : 64 + }, + "index" : 1 + }, + "f32" : { + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "index" : 2 + }, + "i8" : { + "type" : { + "name" : "I8", + "kind" : "integer", + "size" : 8, + "signed" : true + }, + "index" : 3 + }, + "i16" : { + "type" : { + "name" : "I16", + "kind" : "integer", + "size" : 16, + "signed" : true + }, + "index" : 4 + }, + "u8" : { + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "index" : 5 + }, + "u64" : { + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "index" : 6 + }, + "i64" : { + "type" : { + "name" : "I64", + "kind" : "integer", + "size" : 64, + "signed" : true + }, + "index" : 7 + }, + "i32" : { + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "index" : 8 + }, + "u16" : { + "type" : { + "name" : "U16", + "kind" : "integer", + "size" : 16, + "signed" : false + }, + "index" : 9 + } + }, + "default" : { + "u32" : 0, + "f64" : 0.0, + "f32" : 0.0, + "i8" : 0, + "i16" : 0, + "u8" : 0, + "u64" : 0, + "i64" : 0, + "i32" : 0, + "u16" : 0 + }, + "annotation" : "All scalar inputs" + }, + { + "kind" : "enum", + "qualifiedName" : "Fw.Enabled", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "DISABLED", + "value" : 0, + "annotation" : "Disabled state" + }, + { + "name" : "ENABLED", + "value" : 1, + "annotation" : "Enabled state" + } + ], + "default" : "Fw.Enabled.DISABLED", + "annotation" : "Enabled and disabled states" + }, + { + "kind" : "enum", + "qualifiedName" : "Fw.CmdResponse", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "OK", + "value" : 0, + "annotation" : "Command successfully executed" + }, + { + "name" : "INVALID_OPCODE", + "value" : 1, + "annotation" : "Invalid opcode dispatched" + }, + { + "name" : "VALIDATION_ERROR", + "value" : 2, + "annotation" : "Command failed validation" + }, + { + "name" : "FORMAT_ERROR", + "value" : 3, + "annotation" : "Command failed to deserialize" + }, + { + "name" : "EXECUTION_ERROR", + "value" : 4, + "annotation" : "Command had execution error" + }, + { + "name" : "BUSY", + "value" : 5, + "annotation" : "Component busy" + } + ], + "default" : "Fw.CmdResponse.OK", + "annotation" : "Enum representing a command response" + }, + { + "kind" : "enum", + "qualifiedName" : "Svc.CmdSequencer.BlockState", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "BLOCK", + "value" : 0 + }, + { + "name" : "NO_BLOCK", + "value" : 1 + } + ], + "default" : "Svc.CmdSequencer.BlockState.BLOCK", + "annotation" : "Sequencer blocking state" + }, + { + "kind" : "enum", + "qualifiedName" : "Svc.DpTool.Status", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "YES", + "value" : 0 + }, + { + "name" : "NO", + "value" : 1 + }, + { + "name" : "MAYBE", + "value" : 2 + } + ], + "default" : "Svc.DpTool.Status.MAYBE" + }, + { + "kind" : "enum", + "qualifiedName" : "Fw.DpState", + "representationType" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "enumeratedConstants" : [ + { + "name" : "UNTRANSMITTED", + "value" : 0, + "annotation" : "The untransmitted state" + }, + { + "name" : "PARTIAL", + "value" : 1, + "annotation" : "The partially transmitted state\nA data product is in this state from the start of transmission\nuntil transmission is complete." + }, + { + "name" : "TRANSMITTED", + "value" : 2, + "annotation" : "The transmitted state" + } + ], + "default" : "Fw.DpState.UNTRANSMITTED" + }, + { + "kind" : "enum", + "qualifiedName" : "Ref.SignalType", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "TRIANGLE", + "value" : 0 + }, + { + "name" : "SQUARE", + "value" : 1 + }, + { + "name" : "SINE", + "value" : 2 + }, + { + "name" : "NOISE", + "value" : 3 + } + ], + "default" : "Ref.SignalType.TRIANGLE" + }, + { + "kind" : "struct", + "qualifiedName" : "Svc.DpTool.EnumStruct", + "members" : { + "status" : { + "type" : { + "name" : "Svc.DpTool.Status", + "kind" : "qualifiedIdentifier" + }, + "index" : 0 + } + }, + "default" : { + "status" : "Svc.DpTool.Status.MAYBE" + }, + "annotation" : "Data for a EnumRecord" + }, + { + "kind" : "enum", + "qualifiedName" : "Svc.CmdSequencer.SeqMode", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "STEP", + "value" : 0 + }, + { + "name" : "AUTO", + "value" : 1 + } + ], + "default" : "Svc.CmdSequencer.SeqMode.STEP", + "annotation" : "The sequencer mode" + }, + { + "kind" : "struct", + "qualifiedName" : "Ref.ChoiceSlurry", + "members" : { + "tooManyChoices" : { + "type" : { + "name" : "Ref.TooManyChoices", + "kind" : "qualifiedIdentifier" + }, + "index" : 0, + "annotation" : "A large set of disorganized choices" + }, + "separateChoice" : { + "type" : { + "name" : "Ref.Choice", + "kind" : "qualifiedIdentifier" + }, + "index" : 1, + "annotation" : "A singular choice" + }, + "choicePair" : { + "type" : { + "name" : "Ref.ChoicePair", + "kind" : "qualifiedIdentifier" + }, + "index" : 2, + "annotation" : "A pair of choices" + }, + "choiceAsMemberArray" : { + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "index" : 3, + "size" : 2, + "annotation" : "An array of choices defined as member array" + } + }, + "default" : { + "tooManyChoices" : [ + [ + "Ref.Choice.ONE", + "Ref.Choice.ONE" + ], + [ + "Ref.Choice.ONE", + "Ref.Choice.ONE" + ] + ], + "separateChoice" : "Ref.Choice.ONE", + "choicePair" : { + "firstChoice" : "Ref.Choice.ONE", + "secondChoice" : "Ref.Choice.ONE" + }, + "choiceAsMemberArray" : 0 + }, + "annotation" : "Structure of enums (with an multi-dimensional array and structure)" + }, + { + "kind" : "enum", + "qualifiedName" : "Svc.DpHdrField", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "DESCRIPTOR", + "value" : 0 + }, + { + "name" : "ID", + "value" : 1 + }, + { + "name" : "PRIORITY", + "value" : 2 + }, + { + "name" : "CRC", + "value" : 3 + } + ], + "default" : "Svc.DpHdrField.DESCRIPTOR", + "annotation" : "Header validation error" + }, + { + "kind" : "array", + "qualifiedName" : "Ref.FloatSet", + "size" : 3, + "elementType" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "default" : [ + 0.0, + 0.0, + 0.0 + ], + "annotation" : "Set of floating points to emit" + }, + { + "kind" : "enum", + "qualifiedName" : "Ref.SendBuff.ActiveState", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "SEND_IDLE", + "value" : 0 + }, + { + "name" : "SEND_ACTIVE", + "value" : 1 + } + ], + "default" : "Ref.SendBuff.ActiveState.SEND_IDLE", + "annotation" : "Active state" + }, + { + "kind" : "enum", + "qualifiedName" : "Svc.ActiveLogger.FilterSeverity", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "WARNING_HI", + "value" : 0, + "annotation" : "Filter WARNING_HI events" + }, + { + "name" : "WARNING_LO", + "value" : 1, + "annotation" : "Filter WARNING_LO events" + }, + { + "name" : "COMMAND", + "value" : 2, + "annotation" : "Filter COMMAND events" + }, + { + "name" : "ACTIVITY_HI", + "value" : 3, + "annotation" : "Filter ACTIVITY_HI events" + }, + { + "name" : "ACTIVITY_LO", + "value" : 4, + "annotation" : "Filter ACTIVITY_LO events" + }, + { + "name" : "DIAGNOSTIC", + "value" : 5, + "annotation" : "Filter DIAGNOSTIC events" + } + ], + "default" : "Svc.ActiveLogger.FilterSeverity.WARNING_HI", + "annotation" : "Severity level for event filtering\nSimilar to Fw::LogSeverity, but no FATAL event" + }, + { + "kind" : "enum", + "qualifiedName" : "Svc.SystemResourceEnabled", + "representationType" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "enumeratedConstants" : [ + { + "name" : "DISABLED", + "value" : 0 + }, + { + "name" : "ENABLED", + "value" : 1 + } + ], + "default" : "Svc.SystemResourceEnabled.DISABLED" + }, + { + "kind" : "array", + "qualifiedName" : "Ref.SignalSet", + "size" : 4, + "elementType" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "default" : [ + 0.0, + 0.0, + 0.0, + 0.0 + ], + "format" : "{f}" + }, + { + "kind" : "struct", + "qualifiedName" : "Svc.DpRecord", + "members" : { + "priority" : { + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "index" : 0 + }, + "size" : { + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "index" : 1 + }, + "state" : { + "type" : { + "name" : "Fw.DpState", + "kind" : "qualifiedIdentifier" + }, + "index" : 2 + }, + "tSec" : { + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "index" : 3 + }, + "id" : { + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "index" : 4 + }, + "tSub" : { + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "index" : 5 + } + }, + "default" : { + "priority" : 0, + "size" : 0, + "state" : "Fw.DpState.UNTRANSMITTED", + "tSec" : 0, + "id" : 0, + "tSub" : 0 + }, + "annotation" : "Data structure representing a data product." + } + ], + "commands" : [ + { + "name" : "pingRcvr.PR_StopPings", + "commandKind" : "async", + "opcode" : 2560, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Command to disable ping response" + }, + { + "name" : "fileManager.CreateDirectory", + "commandKind" : "async", + "opcode" : 2048, + "formalParams" : [ + { + "name" : "dirName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The directory to create" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Create a directory" + }, + { + "name" : "health.HLTH_ENABLE", + "commandKind" : "async", + "opcode" : 8192, + "formalParams" : [ + { + "name" : "enable", + "type" : { + "name" : "Fw.Enabled", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "whether or not health checks are enabled" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "A command to enable or disable health checks" + }, + { + "name" : "cmdSeq.CS_CANCEL", + "commandKind" : "async", + "opcode" : 1538, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Cancel a command sequence" + }, + { + "name" : "SG3.SignalGen_Toggle", + "commandKind" : "async", + "opcode" : 8961, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Toggle Signal Generator On/Off." + }, + { + "name" : "SG3.SignalGen_Settings", + "commandKind" : "async", + "opcode" : 8960, + "formalParams" : [ + { + "name" : "Frequency", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "Amplitude", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "Phase", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "SigType", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Signal Generator Settings" + }, + { + "name" : "sendBuffComp.SB_GEN_ASSERT", + "commandKind" : "async", + "opcode" : 9731, + "formalParams" : [ + { + "name" : "arg1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "First ASSERT Argument" + }, + { + "name" : "arg2", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Second ASSERT Argument" + }, + { + "name" : "arg3", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Third ASSERT Argument" + }, + { + "name" : "arg4", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Fourth ASSERT Argument" + }, + { + "name" : "arg5", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Fifth ASSERT Argument" + }, + { + "name" : "arg6", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Sixth ASSERT Argument" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Generate an ASSERT" + }, + { + "name" : "SG1.SignalGen_Skip", + "commandKind" : "async", + "opcode" : 8450, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Skip next sample" + }, + { + "name" : "fileDownlink.Cancel", + "commandKind" : "async", + "opcode" : 1793, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Cancel the downlink in progress, if any" + }, + { + "name" : "recvBuffComp.PARAMETER2_PARAM_SET", + "commandKind" : "set", + "opcode" : 18178, + "formalParams" : [ + { + "name" : "val", + "type" : { + "name" : "I16", + "kind" : "integer", + "size" : 16, + "signed" : true + }, + "ref" : false + } + ], + "annotation" : "A test parameter" + }, + { + "name" : "SG3.SignalGen_Dp", + "commandKind" : "async", + "opcode" : 8963, + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Signal Generator Settings" + }, + { + "name" : "SG4.SignalGen_Skip", + "commandKind" : "async", + "opcode" : 9218, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Skip next sample" + }, + { + "name" : "typeDemo.DUMP_TYPED_PARAMETERS", + "commandKind" : "sync", + "opcode" : 4371, + "formalParams" : [ + ], + "annotation" : "Dump the typed parameters" + }, + { + "name" : "SG2.SignalGen_Toggle", + "commandKind" : "async", + "opcode" : 8705, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Toggle Signal Generator On/Off." + }, + { + "name" : "eventLogger.DUMP_FILTER_STATE", + "commandKind" : "async", + "opcode" : 2819, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Dump the filter states via events" + }, + { + "name" : "fileDownlink.SendFile", + "commandKind" : "async", + "opcode" : 1792, + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The name of the on-board file to send" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The name of the destination file on the ground" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Read a named file off the disk. Divide it into packets and send the packets for transmission to the ground." + }, + { + "name" : "SG4.SignalGen_Settings", + "commandKind" : "async", + "opcode" : 9216, + "formalParams" : [ + { + "name" : "Frequency", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "Amplitude", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "Phase", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "SigType", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Signal Generator Settings" + }, + { + "name" : "dpMgr.CLEAR_EVENT_THROTTLE", + "commandKind" : "async", + "opcode" : 3840, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Clear event throttling" + }, + { + "name" : "typeDemo.CHOICE_PRM_PARAM_SET", + "commandKind" : "set", + "opcode" : 4353, + "formalParams" : [ + { + "name" : "val", + "type" : { + "name" : "Ref.Choice", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "annotation" : "Single enumeration parameter" + }, + { + "name" : "typeDemo.GLUTTON_OF_CHOICE_WITH_FRIENDS", + "commandKind" : "sync", + "opcode" : 4368, + "formalParams" : [ + { + "name" : "repeat", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "Number of times to repeat the choices" + }, + { + "name" : "choices", + "type" : { + "name" : "Ref.ChoiceSlurry", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "A phenomenal amount of choice" + }, + { + "name" : "repeat_max", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "Limit to the number of repetitions" + } + ], + "annotation" : "Multiple choices command via Complex Structure with a preceding and following argument" + }, + { + "name" : "SG5.SignalGen_Dp", + "commandKind" : "async", + "opcode" : 9475, + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Signal Generator Settings" + }, + { + "name" : "typeDemo.CHOICES_PRM_PARAM_SAVE", + "commandKind" : "save", + "opcode" : 4358, + "formalParams" : [ + ], + "annotation" : "Multiple enumeration parameter via Array" + }, + { + "name" : "fileManager.MoveFile", + "commandKind" : "async", + "opcode" : 2049, + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The source file name" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The destination file name" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Move a file" + }, + { + "name" : "systemResources.VERSION", + "commandKind" : "guarded", + "opcode" : 19201, + "formalParams" : [ + ], + "annotation" : "Report version as EVR" + }, + { + "name" : "cmdDisp.CMD_CLEAR_TRACKING", + "commandKind" : "async", + "opcode" : 1283, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Clear command tracking info to recover from components not returning status" + }, + { + "name" : "typeDemo.CHOICE_PAIR_WITH_FRIENDS", + "commandKind" : "sync", + "opcode" : 4364, + "formalParams" : [ + { + "name" : "repeat", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "Number of times to repeat the choices" + }, + { + "name" : "choices", + "type" : { + "name" : "Ref.ChoicePair", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "A pair of choices" + }, + { + "name" : "repeat_max", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "Limit to the number of repetitions" + } + ], + "annotation" : "Multiple choices command via Structure with a preceding and following argument" + }, + { + "name" : "sendBuffComp.PARAMETER3_PARAM_SET", + "commandKind" : "set", + "opcode" : 9738, + "formalParams" : [ + { + "name" : "val", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false + } + ], + "annotation" : "A test parameter" + }, + { + "name" : "SG5.SignalGen_Settings", + "commandKind" : "async", + "opcode" : 9472, + "formalParams" : [ + { + "name" : "Frequency", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "Amplitude", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "Phase", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "SigType", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Signal Generator Settings" + }, + { + "name" : "recvBuffComp.PARAMETER1_PARAM_SAVE", + "commandKind" : "save", + "opcode" : 18177, + "formalParams" : [ + ], + "annotation" : "A test parameter" + }, + { + "name" : "typeDemo.GLUTTON_OF_CHOICE_PRM_PARAM_SAVE", + "commandKind" : "save", + "opcode" : 4370, + "formalParams" : [ + ], + "annotation" : "Multiple enumeration parameter via Complex Structure" + }, + { + "name" : "SG4.SignalGen_Toggle", + "commandKind" : "async", + "opcode" : 9217, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Toggle Signal Generator On/Off." + }, + { + "name" : "cmdDisp.CMD_NO_OP_STRING", + "commandKind" : "async", + "opcode" : 1281, + "formalParams" : [ + { + "name" : "arg1", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The String command argument" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "No-op string command" + }, + { + "name" : "cmdSeq.CS_AUTO", + "commandKind" : "async", + "opcode" : 1541, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Set the run mode to AUTO." + }, + { + "name" : "sendBuffComp.SB_GEN_FATAL", + "commandKind" : "async", + "opcode" : 9730, + "formalParams" : [ + { + "name" : "arg1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "First FATAL Argument" + }, + { + "name" : "arg2", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Second FATAL Argument" + }, + { + "name" : "arg3", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Third FATAL Argument" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Generate a FATAL EVR" + }, + { + "name" : "fileDownlink.SendPartial", + "commandKind" : "async", + "opcode" : 1794, + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The name of the on-board file to send" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The name of the destination file on the ground" + }, + { + "name" : "startOffset", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Starting offset of the source file" + }, + { + "name" : "length", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Number of bytes to send from starting offset. Length of 0 implies until the end of the file" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Read a named file off the disk from a starting position. Divide it into packets and send the packets for transmission to the ground." + }, + { + "name" : "SG1.SignalGen_Dp", + "commandKind" : "async", + "opcode" : 8451, + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Signal Generator Settings" + }, + { + "name" : "cmdSeq.CS_STEP", + "commandKind" : "async", + "opcode" : 1540, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Perform one step in a command sequence. Valid only if CmdSequencer is in MANUAL run mode." + }, + { + "name" : "SG2.SignalGen_Settings", + "commandKind" : "async", + "opcode" : 8704, + "formalParams" : [ + { + "name" : "Frequency", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "Amplitude", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "Phase", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "SigType", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Signal Generator Settings" + }, + { + "name" : "fileManager.AppendFile", + "commandKind" : "async", + "opcode" : 2053, + "formalParams" : [ + { + "name" : "source", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file to take content from" + }, + { + "name" : "target", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file to append to" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Append 1 file's contents to the end of another." + }, + { + "name" : "cmdSeq.CS_START", + "commandKind" : "async", + "opcode" : 1539, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Start running a command sequence" + }, + { + "name" : "fileManager.ShellCommand", + "commandKind" : "async", + "opcode" : 2052, + "formalParams" : [ + { + "name" : "command", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The shell command string" + }, + { + "name" : "logFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the log file" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Perform a Linux shell command and write the output to a log file." + }, + { + "name" : "typeDemo.EXTRA_CHOICES_PRM_PARAM_SET", + "commandKind" : "set", + "opcode" : 4361, + "formalParams" : [ + { + "name" : "val", + "type" : { + "name" : "Ref.ManyChoices", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "annotation" : "Too many enumeration parameter via Array" + }, + { + "name" : "sendBuffComp.PARAMETER3_PARAM_SAVE", + "commandKind" : "save", + "opcode" : 9739, + "formalParams" : [ + ], + "annotation" : "A test parameter" + }, + { + "name" : "recvBuffComp.PARAMETER1_PARAM_SET", + "commandKind" : "set", + "opcode" : 18176, + "formalParams" : [ + { + "name" : "val", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "annotation" : "A test parameter" + }, + { + "name" : "typeDemo.CHOICE", + "commandKind" : "sync", + "opcode" : 4352, + "formalParams" : [ + { + "name" : "choice", + "type" : { + "name" : "Ref.Choice", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "A single choice" + } + ], + "annotation" : "Single choice command" + }, + { + "name" : "dpCat.CLEAR_CATALOG", + "commandKind" : "async", + "opcode" : 3587, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "clear existing catalog" + }, + { + "name" : "typeDemo.CHOICE_PRM_PARAM_SAVE", + "commandKind" : "save", + "opcode" : 4354, + "formalParams" : [ + ], + "annotation" : "Single enumeration parameter" + }, + { + "name" : "typeDemo.EXTRA_CHOICES", + "commandKind" : "sync", + "opcode" : 4359, + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.TooManyChoices", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "Way to many choices to make" + } + ], + "annotation" : "Too many choice command via Array" + }, + { + "name" : "typeDemo.CHOICE_PAIR_PRM_PARAM_SET", + "commandKind" : "set", + "opcode" : 4365, + "formalParams" : [ + { + "name" : "val", + "type" : { + "name" : "Ref.ChoicePair", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "annotation" : "Multiple enumeration parameter via Structure" + }, + { + "name" : "dpWriter.CLEAR_EVENT_THROTTLE", + "commandKind" : "async", + "opcode" : 4096, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Clear event throttling" + }, + { + "name" : "sendBuffComp.SB_INJECT_PKT_ERROR", + "commandKind" : "async", + "opcode" : 9729, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Send a bad packet" + }, + { + "name" : "cmdSeq.CS_MANUAL", + "commandKind" : "async", + "opcode" : 1542, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Set the run mode to MANUAL." + }, + { + "name" : "dpCat.STOP_XMIT_CATALOG", + "commandKind" : "async", + "opcode" : 3586, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Stop transmitting catalog" + }, + { + "name" : "cmdDisp.CMD_TEST_CMD_1", + "commandKind" : "async", + "opcode" : 1282, + "formalParams" : [ + { + "name" : "arg1", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The I32 command argument" + }, + { + "name" : "arg2", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false, + "annotation" : "The F32 command argument" + }, + { + "name" : "arg3", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "The U8 command argument" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "No-op command" + }, + { + "name" : "typeDemo.GLUTTON_OF_CHOICE_PRM_PARAM_SET", + "commandKind" : "set", + "opcode" : 4369, + "formalParams" : [ + { + "name" : "val", + "type" : { + "name" : "Ref.ChoiceSlurry", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "annotation" : "Multiple enumeration parameter via Complex Structure" + }, + { + "name" : "fileManager.RemoveFile", + "commandKind" : "async", + "opcode" : 2051, + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The file to remove" + }, + { + "name" : "ignoreErrors", + "type" : { + "name" : "bool", + "kind" : "bool", + "size" : 8 + }, + "ref" : false, + "annotation" : "Ignore nonexistent files" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Remove a file" + }, + { + "name" : "sendBuffComp.PARAMETER4_PARAM_SAVE", + "commandKind" : "save", + "opcode" : 9741, + "formalParams" : [ + ], + "annotation" : "A test parameter" + }, + { + "name" : "typeDemo.SEND_SCALARS", + "commandKind" : "sync", + "opcode" : 4373, + "formalParams" : [ + { + "name" : "scalar_input", + "type" : { + "name" : "Ref.ScalarStruct", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "annotation" : "Send scalars" + }, + { + "name" : "typeDemo.EXTRA_CHOICES_PRM_PARAM_SAVE", + "commandKind" : "save", + "opcode" : 4362, + "formalParams" : [ + ], + "annotation" : "Too many enumeration parameter via Array" + }, + { + "name" : "sendBuffComp.PARAMETER4_PARAM_SET", + "commandKind" : "set", + "opcode" : 9740, + "formalParams" : [ + { + "name" : "val", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + } + ], + "annotation" : "A test parameter" + }, + { + "name" : "fileManager.FileSize", + "commandKind" : "async", + "opcode" : 2054, + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The file to get the size of" + } + ], + "queueFullBehavior" : "assert" + }, + { + "name" : "eventLogger.SET_EVENT_FILTER", + "commandKind" : "sync", + "opcode" : 2816, + "formalParams" : [ + { + "name" : "filterLevel", + "type" : { + "name" : "Svc.ActiveLogger.FilterSeverity", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "Filter level" + }, + { + "name" : "filterEnabled", + "type" : { + "name" : "Svc.ActiveLogger.Enabled", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "Filter state" + } + ], + "annotation" : "Set filter for reporting events. Events are not stored in component." + }, + { + "name" : "typeDemo.CHOICES", + "commandKind" : "sync", + "opcode" : 4355, + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.ManyChoices", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "A set of choices" + } + ], + "annotation" : "Multiple choice command via Array" + }, + { + "name" : "health.HLTH_CHNG_PING", + "commandKind" : "async", + "opcode" : 8194, + "formalParams" : [ + { + "name" : "entry", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The entry to modify" + }, + { + "name" : "warningValue", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Ping warning threshold" + }, + { + "name" : "fatalValue", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Ping fatal threshold" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Change ping value" + }, + { + "name" : "typeDemo.EXTRA_CHOICES_WITH_FRIENDS", + "commandKind" : "sync", + "opcode" : 4360, + "formalParams" : [ + { + "name" : "repeat", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "Number of times to repeat the choices" + }, + { + "name" : "choices", + "type" : { + "name" : "Ref.TooManyChoices", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "Way to many choices to make" + }, + { + "name" : "repeat_max", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "Limit to the number of repetitions" + } + ], + "annotation" : "Too many choices command via Array with a preceding and following argument" + }, + { + "name" : "SG2.SignalGen_Dp", + "commandKind" : "async", + "opcode" : 8707, + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Signal Generator Settings" + }, + { + "name" : "typeDemo.CHOICE_PAIR_PRM_PARAM_SAVE", + "commandKind" : "save", + "opcode" : 4366, + "formalParams" : [ + ], + "annotation" : "Multiple enumeration parameter via Structure" + }, + { + "name" : "SG5.SignalGen_Toggle", + "commandKind" : "async", + "opcode" : 9473, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Toggle Signal Generator On/Off." + }, + { + "name" : "cmdSeq.CS_JOIN_WAIT", + "commandKind" : "async", + "opcode" : 1543, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Wait for sequences that are running to finish. Allow user to run multiple seq files in SEQ_NO_BLOCK mode then wait for them to finish before allowing more seq run request." + }, + { + "name" : "SG1.SignalGen_Settings", + "commandKind" : "async", + "opcode" : 8448, + "formalParams" : [ + { + "name" : "Frequency", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "Amplitude", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "Phase", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "SigType", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Signal Generator Settings" + }, + { + "name" : "cmdSeq.CS_RUN", + "commandKind" : "async", + "opcode" : 1536, + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 240 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + }, + { + "name" : "block", + "type" : { + "name" : "Svc.CmdSequencer.BlockState", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "Return command status when complete or not" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Run a command sequence file" + }, + { + "name" : "SG1.SignalGen_Toggle", + "commandKind" : "async", + "opcode" : 8449, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Toggle Signal Generator On/Off." + }, + { + "name" : "dpCat.BUILD_CATALOG", + "commandKind" : "async", + "opcode" : 3584, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Build catalog from data product directory" + }, + { + "name" : "eventLogger.SET_ID_FILTER", + "commandKind" : "async", + "opcode" : 2818, + "formalParams" : [ + { + "name" : "ID", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "idFilterEnabled", + "type" : { + "name" : "Svc.ActiveLogger.Enabled", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "ID filter state" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Filter a particular ID" + }, + { + "name" : "SG4.SignalGen_Dp", + "commandKind" : "async", + "opcode" : 9219, + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Signal Generator Settings" + }, + { + "name" : "recvBuffComp.PARAMETER2_PARAM_SAVE", + "commandKind" : "save", + "opcode" : 18179, + "formalParams" : [ + ], + "annotation" : "A test parameter" + }, + { + "name" : "SG3.SignalGen_Skip", + "commandKind" : "async", + "opcode" : 8962, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Skip next sample" + }, + { + "name" : "dpCat.START_XMIT_CATALOG", + "commandKind" : "async", + "opcode" : 3585, + "formalParams" : [ + { + "name" : "wait", + "type" : { + "name" : "Fw.Wait", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "have START_XMIT command wait for catalog to complete transmitting" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Start transmitting catalog" + }, + { + "name" : "typeDemo.DUMP_FLOATS", + "commandKind" : "sync", + "opcode" : 4372, + "formalParams" : [ + ], + "annotation" : "Dump the float values" + }, + { + "name" : "cmdDisp.CMD_NO_OP", + "commandKind" : "async", + "opcode" : 1280, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "No-op command" + }, + { + "name" : "fileManager.RemoveDirectory", + "commandKind" : "async", + "opcode" : 2050, + "formalParams" : [ + { + "name" : "dirName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The directory to remove" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Remove a directory, which must be empty" + }, + { + "name" : "typeDemo.CHOICES_PRM_PARAM_SET", + "commandKind" : "set", + "opcode" : 4357, + "formalParams" : [ + { + "name" : "val", + "type" : { + "name" : "Ref.ManyChoices", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "annotation" : "Multiple enumeration parameter via Array" + }, + { + "name" : "sendBuffComp.SB_START_PKTS", + "commandKind" : "async", + "opcode" : 9728, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Command to start sending packets" + }, + { + "name" : "typeDemo.GLUTTON_OF_CHOICE", + "commandKind" : "sync", + "opcode" : 4367, + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.ChoiceSlurry", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "A phenomenal amount of choice" + } + ], + "annotation" : "Multiple choice command via Complex Structure" + }, + { + "name" : "typeDemo.CHOICES_WITH_FRIENDS", + "commandKind" : "sync", + "opcode" : 4356, + "formalParams" : [ + { + "name" : "repeat", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "Number of times to repeat the choices" + }, + { + "name" : "choices", + "type" : { + "name" : "Ref.ManyChoices", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "A set of choices" + }, + { + "name" : "repeat_max", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "Limit to the number of repetitions" + } + ], + "annotation" : "Multiple choice command via Array with a preceding and following argument" + }, + { + "name" : "health.HLTH_PING_ENABLE", + "commandKind" : "async", + "opcode" : 8193, + "formalParams" : [ + { + "name" : "entry", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The entry to enable/disable" + }, + { + "name" : "enable", + "type" : { + "name" : "Fw.Enabled", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "whether or not a port is pinged" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Ignore a particular ping entry" + }, + { + "name" : "prmDb.PRM_SAVE_FILE", + "commandKind" : "async", + "opcode" : 3328, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Command to save parameter image to file. Uses file name passed to constructor" + }, + { + "name" : "systemResources.ENABLE", + "commandKind" : "guarded", + "opcode" : 19200, + "formalParams" : [ + { + "name" : "enable", + "type" : { + "name" : "Svc.SystemResourceEnabled", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "whether or not system resource telemetry is enabled" + } + ], + "annotation" : "A command to enable or disable system resource telemetry" + }, + { + "name" : "SG2.SignalGen_Skip", + "commandKind" : "async", + "opcode" : 8706, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Skip next sample" + }, + { + "name" : "cmdSeq.CS_VALIDATE", + "commandKind" : "async", + "opcode" : 1537, + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 240 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + } + ], + "queueFullBehavior" : "assert", + "annotation" : "Validate a command sequence file" + }, + { + "name" : "SG5.SignalGen_Skip", + "commandKind" : "async", + "opcode" : 9474, + "formalParams" : [ + ], + "queueFullBehavior" : "assert", + "annotation" : "Skip next sample" + }, + { + "name" : "typeDemo.CHOICE_PAIR", + "commandKind" : "sync", + "opcode" : 4363, + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.ChoicePair", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "A pair of choices" + } + ], + "annotation" : "Multiple choice command via Structure" + } + ], + "parameters" : [ + { + "name" : "typeDemo.CHOICES_PRM", + "type" : { + "name" : "Ref.ManyChoices", + "kind" : "qualifiedIdentifier" + }, + "id" : 4353, + "annotation" : "Multiple enumeration parameter via Array" + }, + { + "name" : "recvBuffComp.parameter2", + "type" : { + "name" : "I16", + "kind" : "integer", + "size" : 16, + "signed" : true + }, + "id" : 18177, + "default" : 11, + "annotation" : "A test parameter" + }, + { + "name" : "recvBuffComp.parameter1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 18176, + "default" : 10, + "annotation" : "A test parameter" + }, + { + "name" : "typeDemo.CHOICE_PRM", + "type" : { + "name" : "Ref.Choice", + "kind" : "qualifiedIdentifier" + }, + "id" : 4352, + "annotation" : "Single enumeration parameter" + }, + { + "name" : "typeDemo.EXTRA_CHOICES_PRM", + "type" : { + "name" : "Ref.ManyChoices", + "kind" : "qualifiedIdentifier" + }, + "id" : 4354, + "annotation" : "Too many enumeration parameter via Array" + }, + { + "name" : "sendBuffComp.parameter4", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 9729, + "default" : 13.14, + "annotation" : "A test parameter" + }, + { + "name" : "typeDemo.CHOICE_PAIR_PRM", + "type" : { + "name" : "Ref.ChoicePair", + "kind" : "qualifiedIdentifier" + }, + "id" : 4355, + "annotation" : "Multiple enumeration parameter via Structure" + }, + { + "name" : "typeDemo.GLUTTON_OF_CHOICE_PRM", + "type" : { + "name" : "Ref.ChoiceSlurry", + "kind" : "qualifiedIdentifier" + }, + "id" : 4356, + "annotation" : "Multiple enumeration parameter via Complex Structure" + }, + { + "name" : "sendBuffComp.parameter3", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "id" : 9728, + "default" : 12, + "annotation" : "A test parameter" + } + ], + "events" : [ + { + "name" : "SG3.SignalGen_SettingsChanged", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "Frequency", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "Amplitude", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "Phase", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "SignalType", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 8960, + "format" : "Set Frequency(Hz) {}, Amplitude {f}, Phase {f}, Signal Type {}", + "annotation" : "Signal Generator Settings Changed" + }, + { + "name" : "rateGroup3Comp.RateGroupStarted", + "severity" : "DIAGNOSTIC", + "formalParams" : [ + ], + "id" : 1024, + "format" : "Rate group started.", + "annotation" : "Informational event that rate group has started" + }, + { + "name" : "cmdSeq.CS_JoinWaiting", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "filename", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The sequence file" + }, + { + "name" : "recordNumber", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The record number" + }, + { + "name" : "opCode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The opcode" + } + ], + "id" : 1559, + "format" : "Start waiting for sequence file {}: Command {} (opcode {}) to complete", + "annotation" : "Wait for the current running sequence file complete" + }, + { + "name" : "sendBuffComp.SendBuffFatal", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "arg1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "First FATAL argument" + }, + { + "name" : "arg2", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Second FATAL argument" + }, + { + "name" : "arg3", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Second FATAL argument" + } + ], + "id" : 9731, + "format" : "Test Fatal: {} {} {}", + "annotation" : "A test FATAL" + }, + { + "name" : "cmdSeq.CS_TimeBaseMismatch", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + }, + { + "name" : "time_base", + "type" : { + "name" : "U16", + "kind" : "integer", + "size" : 16, + "signed" : false + }, + "ref" : false, + "annotation" : "The current time" + }, + { + "name" : "seq_time_base", + "type" : { + "name" : "U16", + "kind" : "integer", + "size" : 16, + "signed" : false + }, + "ref" : false, + "annotation" : "The sequence time base" + } + ], + "id" : 1549, + "format" : "Sequence file {}: Current time base doesn't match sequence time: base: {} seq: {}", + "annotation" : "The running time base doesn't match the time base in the sequence files" + }, + { + "name" : "cmdSeq.CS_NoSequenceActive", + "severity" : "WARNING_LO", + "formalParams" : [ + ], + "id" : 1554, + "format" : "No sequence active.", + "annotation" : "A sequence related command came with no active sequence" + }, + { + "name" : "fileUplink.FileReceived", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The name of the file" + } + ], + "id" : 2306, + "format" : "Received file {}", + "annotation" : "The File Uplink component successfully received a file" + }, + { + "name" : "dpWriter.FileOpenError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "status", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The status code returned from the open operation" + }, + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The file" + } + ], + "id" : 4101, + "format" : "Error {} opening file {}", + "annotation" : "An error occurred when opening a file", + "throttle" : 10 + }, + { + "name" : "fatalAdapter.AF_ASSERT_2", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The source file of the assert" + }, + { + "name" : "line", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Line number of the assert" + }, + { + "name" : "arg1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "First assert argument" + }, + { + "name" : "arg2", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Second assert argument" + } + ], + "id" : 16898, + "format" : "Assert in file {}, line {}: {} {}", + "annotation" : "An assert happened" + }, + { + "name" : "fileUplink.PacketOutOfBounds", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "packetIndex", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The sequence index of the packet" + }, + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The name of the file" + } + ], + "id" : 2309, + "format" : "Packet {} out of bounds for file {}", + "annotation" : "During receipt of a file, the File Uplink component encountered a packet with offset and size out of bounds for the current file", + "throttle" : 5 + }, + { + "name" : "SG1.SignalGen_DpComplete", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 8450, + "format" : "Writing {} DP records {} bytes total" + }, + { + "name" : "cmdDisp.OpCodeReregistered", + "severity" : "DIAGNOSTIC", + "formalParams" : [ + { + "name" : "Opcode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The opcode reregistered" + }, + { + "name" : "port", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The reregistration port" + } + ], + "id" : 1290, + "format" : "Opcode 0x{x} is already registered to port {}", + "annotation" : "Op code reregistered event" + }, + { + "name" : "fileManager.CreateDirectoryStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "dirName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the directory" + } + ], + "id" : 2062, + "format" : "Creating directory {}...", + "annotation" : "The File System component began creating a new directory" + }, + { + "name" : "cmdSeq.CS_CommandComplete", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + }, + { + "name" : "recordNumber", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The record number of the command" + }, + { + "name" : "opCode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The command opcode" + } + ], + "id" : 1544, + "format" : "Sequence file {}: Command {} (opcode {}) complete", + "annotation" : "The Command Sequencer issued a command and received a success status in return." + }, + { + "name" : "fileDownlink.FileReadError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The name of the file" + }, + { + "name" : "status", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The file status of read" + } + ], + "id" : 1793, + "format" : "Could not read file {} with status {}", + "annotation" : "An error occurred reading a file" + }, + { + "name" : "recvBuffComp.BuffRecvParameterUpdated", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The ID argument" + } + ], + "id" : 18178, + "format" : "BuffRecv Parameter {} was updated", + "annotation" : "Report parameter update" + }, + { + "name" : "SG3.SignalGen_DpRecordFull", + "severity" : "WARNING_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 8963, + "format" : "DP container full with {} records and {} bytes. Closing DP." + }, + { + "name" : "prmDb.PrmFileWriteError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "stage", + "type" : { + "name" : "Svc.PrmDb.PrmWriteError", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "The write stage" + }, + { + "name" : "record", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The record that had the failure" + }, + { + "name" : "error", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The error code" + } + ], + "id" : 3332, + "format" : "Parameter write failed in stage {} with record {} and error {}", + "annotation" : "Failed to write parameter file" + }, + { + "name" : "dpWriter.BufferTooSmallForPacket", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "bufferSize", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The incoming buffer size" + }, + { + "name" : "minSize", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The minimum required size" + } + ], + "id" : 4097, + "format" : "Received buffer has size {}; minimum required size is {}", + "annotation" : "Received buffer is too small to hold a data product packet", + "throttle" : 10 + }, + { + "name" : "SG4.SignalGen_DpComplete", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 9218, + "format" : "Writing {} DP records {} bytes total" + }, + { + "name" : "prmDb.PrmFileLoadComplete", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The number of records loaded" + } + ], + "id" : 3335, + "format" : "Parameter file load completed. Read {} records.", + "annotation" : "Load of parameter file completed" + }, + { + "name" : "SG5.SignalGen_DpsNotConnected", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 9476, + "format" : "DP Ports not connected!" + }, + { + "name" : "SG2.SignalGen_DpStarted", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 8705, + "format" : "Writing {} DP records" + }, + { + "name" : "fileManager.FileSizeError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file" + }, + { + "name" : "status", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The error status" + } + ], + "id" : 2067, + "format" : "Failed to get the size of file {}, returned status {}", + "annotation" : "Failed to get file size" + }, + { + "name" : "eventLogger.ID_FILTER_REMOVED", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "ID", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The ID removed" + } + ], + "id" : 2819, + "format" : "ID filter ID {} removed.", + "annotation" : "Removed an ID from the filter" + }, + { + "name" : "dpCat.SendingProduct", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The file" + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "file size" + }, + { + "name" : "prio", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "DP priority" + } + ], + "id" : 3597, + "format" : "Sending product {} of size {} priority {}", + "annotation" : "Sending product" + }, + { + "name" : "cmdDisp.NoOpReceived", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + ], + "id" : 1287, + "format" : "Received a NO-OP command", + "annotation" : "The command dispatcher has successfully received a NO-OP command" + }, + { + "name" : "fileDownlink.FileOpenError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The name of the file" + } + ], + "id" : 1792, + "format" : "Could not open file {}", + "annotation" : "An error occurred opening a file" + }, + { + "name" : "SG4.SignalGen_SettingsChanged", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "Frequency", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "Amplitude", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "Phase", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "SignalType", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 9216, + "format" : "Set Frequency(Hz) {}, Amplitude {f}, Phase {f}, Signal Type {}", + "annotation" : "Signal Generator Settings Changed" + }, + { + "name" : "dpCat.DpDuplicate", + "severity" : "DIAGNOSTIC", + "formalParams" : [ + { + "name" : "dp", + "type" : { + "name" : "Svc.DpRecord", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "The DP" + } + ], + "id" : 3612, + "format" : "DP {} already in catalog", + "annotation" : "Error inserting entry into list", + "throttle" : 10 + }, + { + "name" : "cmdSeq.CS_SequenceComplete", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + } + ], + "id" : 1545, + "format" : "Sequence file {} complete", + "annotation" : "A command sequence successfully completed." + }, + { + "name" : "fileDownlink.SendStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "fileSize", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The source file size" + }, + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The source filename" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The destination filename" + } + ], + "id" : 1800, + "format" : "Downlink of {} bytes started from {} to {}", + "annotation" : "The File Downlink component started a file download." + }, + { + "name" : "dpMgr.BufferAllocationFailed", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The container ID" + } + ], + "id" : 3840, + "format" : "Buffer allocation failed for container id {}", + "annotation" : "Buffer allocation failed", + "throttle" : 10 + }, + { + "name" : "typeDemo.ChoicesEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.ManyChoices", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4353, + "format" : "Choices: {}", + "annotation" : "Multiple choice event via Array" + }, + { + "name" : "SG5.SignalGen_DpRecordFull", + "severity" : "WARNING_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 9475, + "format" : "DP container full with {} records and {} bytes. Closing DP." + }, + { + "name" : "typeDemo.ChoicesPrmEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.ManyChoices", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + }, + { + "name" : "validity", + "type" : { + "name" : "Fw.ParamValid", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4358, + "format" : "CHOICES_PRM: {} with validity: {}", + "annotation" : "Multiple choice parameter event via Array" + }, + { + "name" : "fileManager.DirectoryRemoveError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "dirName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the directory" + }, + { + "name" : "status", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The error status" + } + ], + "id" : 2049, + "format" : "Could not remove directory {}, returned status {}", + "annotation" : "An error occurred while attempting to remove a directory" + }, + { + "name" : "systemResources.PROJECT_VERSION", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "version", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "version string" + } + ], + "id" : 19201, + "format" : "Project Version: [{}]", + "annotation" : "Version of the git repository." + }, + { + "name" : "fatalAdapter.AF_ASSERT_1", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The source file of the assert" + }, + { + "name" : "line", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Line number of the assert" + }, + { + "name" : "arg1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "First assert argument" + } + ], + "id" : 16897, + "format" : "Assert in file {}, line {}: {}", + "annotation" : "An assert happened" + }, + { + "name" : "health.HLTH_CHECK_PING", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "enabled", + "type" : { + "name" : "Fw.Enabled", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "If health pinging is enabled for a particular entry" + }, + { + "name" : "entry", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The entry passing the warning level" + } + ], + "id" : 8196, + "format" : "Health checking set to {} for {}", + "annotation" : "Report a particular entry on or off" + }, + { + "name" : "cmdDisp.OpCodeError", + "severity" : "COMMAND", + "formalParams" : [ + { + "name" : "Opcode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The opcode with the error" + }, + { + "name" : "error", + "type" : { + "name" : "Fw.CmdResponse", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "The error value" + } + ], + "id" : 1283, + "format" : "Opcode 0x{x} completed with error {}", + "annotation" : "Op code completed with error event" + }, + { + "name" : "fileManager.MoveFileSucceeded", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the source file" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the destination file" + } + ], + "id" : 2058, + "format" : "Moved file {} to file {} successfully", + "annotation" : "The File System component moved a file to a new location without error" + }, + { + "name" : "fatalAdapter.AF_ASSERT_6", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The source file of the assert" + }, + { + "name" : "line", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Line number of the assert" + }, + { + "name" : "arg1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "First assert argument" + }, + { + "name" : "arg2", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Second assert argument" + }, + { + "name" : "arg3", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Third assert argument" + }, + { + "name" : "arg4", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Fourth assert argument" + }, + { + "name" : "arg5", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Fifth assert argument" + }, + { + "name" : "arg6", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Sixth assert argument" + } + ], + "id" : 16902, + "format" : "Assert in file {}, line {}: {} {} {} {} {} {}", + "annotation" : "An assert happened" + }, + { + "name" : "fileDownlink.DownlinkTimeout", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The source filename" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The destination file name" + } + ], + "id" : 1796, + "format" : "Timeout occurred during downlink of file {} to file {}. Downlink has been canceled.", + "annotation" : "The File Downlink component has detected a timeout. Downlink has been canceled." + }, + { + "name" : "dpCat.CatalogBuildComplete", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + ], + "id" : 3588, + "format" : "Catalog build complete", + "annotation" : "Catalog processing complete" + }, + { + "name" : "dpCat.CatalogFull", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "dir", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "last directory read" + } + ], + "id" : 3606, + "format" : "DpCatalog full during directory {}", + "annotation" : "Catalog is full", + "throttle" : 10 + }, + { + "name" : "SG5.SignalGen_SettingsChanged", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "Frequency", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "Amplitude", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "Phase", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "SignalType", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 9472, + "format" : "Set Frequency(Hz) {}, Amplitude {f}, Phase {f}, Signal Type {}", + "annotation" : "Signal Generator Settings Changed" + }, + { + "name" : "rateGroup1Comp.RateGroupStarted", + "severity" : "DIAGNOSTIC", + "formalParams" : [ + ], + "id" : 512, + "format" : "Rate group started.", + "annotation" : "Informational event that rate group has started" + }, + { + "name" : "recvBuffComp.PacketChecksumError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The ID argument" + } + ], + "id" : 18177, + "format" : "Packet ID {} had checksum error", + "annotation" : "Packet checksum error" + }, + { + "name" : "fileUplink.FileWriteError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The name of the file" + } + ], + "id" : 2307, + "format" : "Could not write to file {}", + "annotation" : "An error occurred writing to a file", + "throttle" : 5 + }, + { + "name" : "dpWriter.BufferTooSmallForData", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "bufferSize", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The incoming buffer size" + }, + { + "name" : "minSize", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The minimum required size" + } + ], + "id" : 4100, + "format" : "Received buffer has size {}; minimum required size is {}", + "annotation" : "Received buffer is too small to hold the data specified in the header", + "throttle" : 10 + }, + { + "name" : "fileManager.ShellCommandStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "command", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The command string" + } + ], + "id" : 2061, + "format" : "Running shell command {}...", + "annotation" : "The File System component began executing a shell command" + }, + { + "name" : "pingRcvr.PR_PingsDisabled", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + ], + "id" : 2560, + "format" : "PingReceiver ping responses disabled", + "annotation" : "Disabled ping responses" + }, + { + "name" : "health.HLTH_PING_INVALID_VALUES", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "entry", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The entry changed" + }, + { + "name" : "warn", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The new warning value" + }, + { + "name" : "fatal", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The new FATAL value" + } + ], + "id" : 8199, + "format" : "Health ping for {} invalid values: WARN {} FATAL {}", + "annotation" : "Report changed ping" + }, + { + "name" : "dpCat.FileHdrDesError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The file" + }, + { + "name" : "stat", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false + } + ], + "id" : 3610, + "format" : "Error deserializing DP {} header stat: {}", + "annotation" : "Error deserializing header data", + "throttle" : 10 + }, + { + "name" : "cmdSeq.CS_JoinWaitingNotComplete", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 1560, + "format" : "Still waiting for sequence file to complete", + "annotation" : "Cannot run new sequence when current sequence file is still running." + }, + { + "name" : "SG4.SignalGen_DpStarted", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 9217, + "format" : "Writing {} DP records" + }, + { + "name" : "fileManager.FileSizeStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file" + } + ], + "id" : 2068, + "format" : "Checking size of file {}...", + "annotation" : "Checking file size" + }, + { + "name" : "SG3.SignalGen_DpsNotConnected", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 8964, + "format" : "DP Ports not connected!" + }, + { + "name" : "cmdDisp.OpCodeDispatched", + "severity" : "COMMAND", + "formalParams" : [ + { + "name" : "Opcode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The opcode dispatched" + }, + { + "name" : "port", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The port dispatched to" + } + ], + "id" : 1281, + "format" : "Opcode 0x{x} dispatched to port {}", + "annotation" : "Op code dispatched event" + }, + { + "name" : "dpCat.CatalogXmitStopped", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "data transmitted" + } + ], + "id" : 3595, + "format" : "Catalog transmission stopped. {} bytes transmitted.", + "annotation" : "Catalog transmission stopped" + }, + { + "name" : "fatalAdapter.AF_ASSERT_3", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The source file of the assert" + }, + { + "name" : "line", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Line number of the assert" + }, + { + "name" : "arg1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "First assert argument" + }, + { + "name" : "arg2", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Second assert argument" + }, + { + "name" : "arg3", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Third assert argument" + } + ], + "id" : 16899, + "format" : "Assert in file {}, line {}: {} {} {}", + "annotation" : "An assert happened" + }, + { + "name" : "cmdSeq.CS_SequenceValid", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "filename", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The sequence file" + } + ], + "id" : 1555, + "format" : "Sequence {} is valid.", + "annotation" : "A sequence passed validation" + }, + { + "name" : "eventLogger.ID_FILTER_NOT_FOUND", + "severity" : "WARNING_LO", + "formalParams" : [ + { + "name" : "ID", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The ID removed" + } + ], + "id" : 2820, + "format" : "ID filter ID {} not found.", + "annotation" : "ID not in filter" + }, + { + "name" : "sendBuffComp.BuffSendParameterUpdated", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The ID argument" + } + ], + "id" : 9730, + "format" : "BuffSend Parameter {} was updated", + "annotation" : "Report parameter update" + }, + { + "name" : "fileDownlink.FileSent", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The source file name" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The destination file name" + } + ], + "id" : 1794, + "format" : "Sent file {} to file {}", + "annotation" : "The File Downlink component successfully sent a file" + }, + { + "name" : "dpCat.FileSizeError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The file" + }, + { + "name" : "stat", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false + } + ], + "id" : 3615, + "format" : "Error getting file {} size. stat: {}", + "annotation" : "Error getting file size", + "throttle" : 10 + }, + { + "name" : "cmdSeq.CS_FileSizeError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + }, + { + "name" : "size", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Invalid size" + } + ], + "id" : 1541, + "format" : "Sequence file {} too large. Size: {}", + "annotation" : "The sequence file was too large." + }, + { + "name" : "SG1.SignalGen_DpRecordFull", + "severity" : "WARNING_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 8451, + "format" : "DP container full with {} records and {} bytes. Closing DP." + }, + { + "name" : "cmdSeq.CS_RecordInvalid", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + }, + { + "name" : "recordNumber", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The record number" + }, + { + "name" : "error", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The error code" + } + ], + "id" : 1540, + "format" : "Sequence file {}: Record {} invalid. Err: {}", + "annotation" : "The format of a command record was invalid." + }, + { + "name" : "SG2.SignalGen_SettingsChanged", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "Frequency", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "Amplitude", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "Phase", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "SignalType", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 8704, + "format" : "Set Frequency(Hz) {}, Amplitude {f}, Phase {f}, Signal Type {}", + "annotation" : "Signal Generator Settings Changed" + }, + { + "name" : "pingRcvr.PR_PingReceived", + "severity" : "DIAGNOSTIC", + "formalParams" : [ + { + "name" : "code", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Ping code" + } + ], + "id" : 2561, + "format" : "PingReceiver pinged with code {}", + "annotation" : "Got ping" + }, + { + "name" : "dpCat.CatalogXmitCompleted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "bytes", + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "ref" : false, + "annotation" : "data transmitted" + } + ], + "id" : 3596, + "format" : "Catalog transmission completed. {} bytes transmitted.", + "annotation" : "Catalog transmission completed" + }, + { + "name" : "fileUplink.DecodeError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "status", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The sequence index of the out-of-order packet" + } + ], + "id" : 2312, + "format" : "Unable to decode file packet. Status: {}", + "annotation" : "Error decoding file packet" + }, + { + "name" : "fatalAdapter.AF_UNEXPECTED_ASSERT", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The source file of the assert" + }, + { + "name" : "line", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Line number of the assert" + }, + { + "name" : "numArgs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Number of unexpected arguments" + } + ], + "id" : 16903, + "format" : "Unexpected assert in file {}, line {}, args {}", + "annotation" : "An unexpected assert happened" + }, + { + "name" : "fileManager.AppendFileFailed", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "source", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file being read from" + }, + { + "name" : "target", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file to append to" + }, + { + "name" : "status", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The error status" + } + ], + "id" : 2053, + "format" : "Appending {} onto {} failed with status {}", + "annotation" : "The File System component returned status non-zero when trying to append 2 files together" + }, + { + "name" : "dpCat.DpInsertError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "dp", + "type" : { + "name" : "Svc.DpRecord", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "The DP" + } + ], + "id" : 3611, + "format" : "Error deserializing DP {}", + "annotation" : "Error inserting entry into list", + "throttle" : 10 + }, + { + "name" : "fileUplink.BadChecksum", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The file name" + }, + { + "name" : "computed", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The computed value" + }, + { + "name" : "read", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The value read" + } + ], + "id" : 2304, + "format" : "Bad checksum value during receipt of file {}: computed 0x{x}, read 0x{x}", + "annotation" : "During receipt of a file, the computed checksum value did not match the stored value" + }, + { + "name" : "cmdSeq.CS_FileInvalid", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + }, + { + "name" : "stage", + "type" : { + "name" : "Svc.CmdSequencer.FileReadStage", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "The read stage" + }, + { + "name" : "error", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The error code" + } + ], + "id" : 1539, + "format" : "Sequence file {} invalid. Stage: {} Error: {}", + "annotation" : "The sequence file format was invalid." + }, + { + "name" : "cmdSeq.CS_UnexpectedCompletion", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "opcode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The reported opcode" + } + ], + "id" : 1552, + "format" : "Command complete status received while no sequences active. Opcode: {}", + "annotation" : "A command status came back when no sequence was running" + }, + { + "name" : "recvBuffComp.FirstPacketReceived", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The ID argument" + } + ], + "id" : 18176, + "format" : "First packet ID {} received", + "annotation" : "First packet received" + }, + { + "name" : "fileDownlink.SendDataFail", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The source filename" + }, + { + "name" : "byteOffset", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Byte offset" + } + ], + "id" : 1799, + "format" : "Failed to send data packet from file {} at byte offset {}.", + "annotation" : "The File Downlink component generated an error when trying to send a data packet." + }, + { + "name" : "fileManager.ShellCommandFailed", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "command", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The command string" + }, + { + "name" : "status", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The status code" + } + ], + "id" : 2052, + "format" : "Shell command {} failed with status {}", + "annotation" : "The File System component executed a shell command that returned status non-zero" + }, + { + "name" : "prmDb.PrmFileSaveComplete", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The number of records saved" + } + ], + "id" : 3333, + "format" : "Parameter file save completed. Wrote {} records.", + "annotation" : "Save of parameter file completed" + }, + { + "name" : "typeDemo.ChoiceSlurryPrmEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.ChoiceSlurry", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + }, + { + "name" : "validity", + "type" : { + "name" : "Fw.ParamValid", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4361, + "format" : "GLUTTON_OF_CHOICE_PRM: {} with validity: {}", + "annotation" : "Multiple choice parameter event via Complex Structure" + }, + { + "name" : "typeDemo.ChoiceEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "choice", + "type" : { + "name" : "Ref.Choice", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4352, + "format" : "Choice: {}", + "annotation" : "Single choice event" + }, + { + "name" : "dpCat.ProcessingDirectoryComplete", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "loc", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The directory" + }, + { + "name" : "total", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "total data products" + }, + { + "name" : "pending", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "pending data products" + }, + { + "name" : "pending_bytes", + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "ref" : false, + "annotation" : "pending data product volume" + } + ], + "id" : 3587, + "format" : "Completed processing directory {}. Total products: {} Pending products: {} Pending bytes: {}", + "annotation" : "Directory Processing complete" + }, + { + "name" : "fileManager.RemoveDirectorySucceeded", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "dirName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the directory" + } + ], + "id" : 2057, + "format" : "Removed directory {} successfully", + "annotation" : "The File System component deleted and existing directory without error" + }, + { + "name" : "cmdDisp.TooManyCommands", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "Opcode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The opcode that overflowed the list" + } + ], + "id" : 1286, + "format" : "Too many outstanding commands. opcode=0x{x}", + "annotation" : "Exceeded the number of commands that can be simultaneously executed" + }, + { + "name" : "SG2.SignalGen_DpsNotConnected", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 8708, + "format" : "DP Ports not connected!" + }, + { + "name" : "rateGroup1Comp.RateGroupCycleSlip", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "cycle", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The cycle where the cycle occurred" + } + ], + "id" : 513, + "format" : "Rate group cycle slipped on cycle {}", + "annotation" : "Warning event that rate group has had a cycle slip" + }, + { + "name" : "typeDemo.ExtraChoicesEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.TooManyChoices", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4354, + "format" : "Choices: {}", + "annotation" : "Too many choice event via Array" + }, + { + "name" : "cmdSeq.CS_RecordMismatch", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + }, + { + "name" : "header_records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The number of records in the header" + }, + { + "name" : "extra_bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The number of bytes beyond last record" + } + ], + "id" : 1548, + "format" : "Sequence file {} header records mismatch: {} in header, found {} extra bytes.", + "annotation" : "Number of records in header doesn't match number in file" + }, + { + "name" : "typeDemo.ExtraChoicesPrmEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.TooManyChoices", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + }, + { + "name" : "validity", + "type" : { + "name" : "Fw.ParamValid", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4359, + "format" : "EXTRA_CHOICES_PRM: {} with validity: {}", + "annotation" : "Too many choice parameter event via Array" + }, + { + "name" : "health.HLTH_CHECK_ENABLE", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "enabled", + "type" : { + "name" : "Fw.Enabled", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "If health checking is enabled" + } + ], + "id" : 8195, + "format" : "Health checking set to {}", + "annotation" : "Report checking turned on or off" + }, + { + "name" : "dpCat.FileOpenError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "loc", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The directory" + }, + { + "name" : "stat", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "status" + } + ], + "id" : 3607, + "format" : "Unable to open DP file {} status {}", + "annotation" : "Error opening file", + "throttle" : 10 + }, + { + "name" : "fileManager.DirectoryCreateError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "dirName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the directory" + }, + { + "name" : "status", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The error status" + } + ], + "id" : 2048, + "format" : "Could not create directory {}, returned status {}", + "annotation" : "An error occurred while attempting to create a directory" + }, + { + "name" : "dpCat.FileHdrError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The file" + }, + { + "name" : "field", + "type" : { + "name" : "Svc.DpHdrField", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "incorrect value" + }, + { + "name" : "exp", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "expected value" + }, + { + "name" : "act", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "expected value" + } + ], + "id" : 3609, + "format" : "Error reading DP {} header {} field. Expected: {} Actual: {}", + "annotation" : "Error reading header data from DP file", + "throttle" : 10 + }, + { + "name" : "fileDownlink.DownlinkCanceled", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The source file name" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The destination file name" + } + ], + "id" : 1795, + "format" : "Canceled downlink of file {} to file {}", + "annotation" : "The File Downlink component canceled downlink of a file" + }, + { + "name" : "dpCat.ComponentNotInitialized", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 3604, + "format" : "DpCatalog not initialized!", + "annotation" : "Component not initialized error", + "throttle" : 10 + }, + { + "name" : "eventLogger.ID_FILTER_ENABLED", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "ID", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The ID filtered" + } + ], + "id" : 2817, + "format" : "ID {} is filtered.", + "annotation" : "Indicate ID is filtered" + }, + { + "name" : "dpWriter.InvalidBuffer", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 4096, + "format" : "Received buffer is invalid", + "annotation" : "Received buffer is invalid", + "throttle" : 10 + }, + { + "name" : "fileUplink.InvalidReceiveMode", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "packetType", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The type of the packet received" + }, + { + "name" : "mode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The receive mode" + } + ], + "id" : 2308, + "format" : "Packet type {} received in mode {}", + "annotation" : "The File Uplink component received a packet with a type that was invalid for the current receive mode", + "throttle" : 5 + }, + { + "name" : "dpCat.CatalogXmitStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + ], + "id" : 3594, + "format" : "Catalog transmission started", + "annotation" : "Catalog transmission started" + }, + { + "name" : "fatalAdapter.AF_ASSERT_0", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The source file of the assert" + }, + { + "name" : "line", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Line number of the assert" + } + ], + "id" : 16896, + "format" : "Assert in file {}, line {}", + "annotation" : "An assert happened" + }, + { + "name" : "fileManager.ShellCommandSucceeded", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "command", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The command string" + } + ], + "id" : 2055, + "format" : "Shell command {} succeeded", + "annotation" : "The File System component executed a shell command that returned status zero" + }, + { + "name" : "sendBuffComp.PacketErrorInserted", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The ID argument" + } + ], + "id" : 9729, + "format" : "Inserted error in packet ID {}", + "annotation" : "Packet checksum error" + }, + { + "name" : "dpWriter.InvalidHeader", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "bufferSize", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The incoming buffer size" + }, + { + "name" : "errorCode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The error code" + } + ], + "id" : 4099, + "format" : "Received buffer of size {}; deserialization of packet header failed with error code {}", + "annotation" : "Error occurred when deserializing the packet header", + "throttle" : 10 + }, + { + "name" : "prmDb.PrmDbFull", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "Id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The parameter ID" + } + ], + "id" : 3330, + "format" : "Parameter DB full when adding ID 0x{x} ", + "annotation" : "Parameter database is full" + }, + { + "name" : "fatalAdapter.AF_ASSERT_4", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The source file of the assert" + }, + { + "name" : "line", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Line number of the assert" + }, + { + "name" : "arg1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "First assert argument" + }, + { + "name" : "arg2", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Second assert argument" + }, + { + "name" : "arg3", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Third assert argument" + }, + { + "name" : "arg4", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Fourth assert argument" + } + ], + "id" : 16900, + "format" : "Assert in file {}, line {}: {} {} {} {}", + "annotation" : "An assert happened" + }, + { + "name" : "fileUplink.UplinkCanceled", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + ], + "id" : 2311, + "format" : "Received CANCEL packet", + "annotation" : "The File Uplink component received a CANCEL packet" + }, + { + "name" : "SG1.SignalGen_DpsNotConnected", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 8452, + "format" : "DP Ports not connected!" + }, + { + "name" : "cmdDisp.OpCodeCompleted", + "severity" : "COMMAND", + "formalParams" : [ + { + "name" : "Opcode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The I32 command argument" + } + ], + "id" : 1282, + "format" : "Opcode 0x{x} completed", + "annotation" : "Op code completed event" + }, + { + "name" : "cmdSeq.CS_FileNotFound", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The sequence file" + } + ], + "id" : 1542, + "format" : "Sequence file {} not found.", + "annotation" : "The sequence file was not found" + }, + { + "name" : "dpCat.ProcessingFile", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The file" + } + ], + "id" : 3586, + "format" : "Processing file {}", + "annotation" : "Processing directory" + }, + { + "name" : "fileManager.RemoveFileStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file" + } + ], + "id" : 2065, + "format" : "Removing file {}...", + "annotation" : "The File System component began deleting an existing file" + }, + { + "name" : "health.HLTH_PING_WARN", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "entry", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The entry passing the warning level" + } + ], + "id" : 8192, + "format" : "Ping entry {} late warning", + "annotation" : "Warn that a ping target is longer than the warning value" + }, + { + "name" : "dpCat.DpXmitInProgress", + "severity" : "WARNING_LO", + "formalParams" : [ + ], + "id" : 3614, + "format" : "Cannot build new catalog while DPs are being transmitted", + "annotation" : "Tried to build catalog while downlink process active", + "throttle" : 10 + }, + { + "name" : "health.HLTH_PING_UPDATED", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "entry", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The entry changed" + }, + { + "name" : "warn", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The new warning value" + }, + { + "name" : "fatal", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The new FATAL value" + } + ], + "id" : 8198, + "format" : "Health ping for {} changed to WARN {} FATAL {}", + "annotation" : "Report changed ping" + }, + { + "name" : "dpWriter.FileWritten", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The number of bytes written" + }, + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The file name" + } + ], + "id" : 4103, + "format" : "Wrote {} bytes to file {}", + "annotation" : "File written" + }, + { + "name" : "cmdSeq.CS_CmdStepped", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "filename", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The sequence file" + }, + { + "name" : "command", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The command that was stepped" + } + ], + "id" : 1557, + "format" : "Sequence {} command {} stepped", + "annotation" : "A command in a sequence was stepped through" + }, + { + "name" : "cmdSeq.CS_SequenceTimeout", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "filename", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The sequence file" + }, + { + "name" : "command", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The command that timed out" + } + ], + "id" : 1556, + "format" : "Sequence {} timed out on command {}", + "annotation" : "A sequence passed validation" + }, + { + "name" : "rateGroup2Comp.RateGroupCycleSlip", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "cycle", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The cycle where the cycle occurred" + } + ], + "id" : 769, + "format" : "Rate group cycle slipped on cycle {}", + "annotation" : "Warning event that rate group has had a cycle slip" + }, + { + "name" : "rateGroup2Comp.RateGroupStarted", + "severity" : "DIAGNOSTIC", + "formalParams" : [ + ], + "id" : 768, + "format" : "Rate group started.", + "annotation" : "Informational event that rate group has started" + }, + { + "name" : "fileManager.FileRemoveError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file" + }, + { + "name" : "status", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The error status" + } + ], + "id" : 2051, + "format" : "Could not remove file {}, returned status {}", + "annotation" : "An error occurred while attempting to remove a file" + }, + { + "name" : "fileManager.MoveFileStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the source file" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the destination file" + } + ], + "id" : 2064, + "format" : "Moving file {} to file {}...", + "annotation" : "The File System component began moving a file to a new location" + }, + { + "name" : "typeDemo.FloatEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "float1", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "float2", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "float3", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "floats", + "type" : { + "name" : "Ref.FloatSet", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4362, + "format" : "Floats: {} {} {} as a set: {}", + "annotation" : "A set of floats in an event" + }, + { + "name" : "fileManager.AppendFileSucceeded", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "source", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file being read from" + }, + { + "name" : "target", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file to append to" + } + ], + "id" : 2054, + "format" : "Appended {} to the end of {}", + "annotation" : "The File System component appended 2 files without error" + }, + { + "name" : "eventLogger.SEVERITY_FILTER_STATE", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "severity", + "type" : { + "name" : "Svc.ActiveLogger.FilterSeverity", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "The severity level" + }, + { + "name" : "enabled", + "type" : { + "name" : "bool", + "kind" : "bool", + "size" : 8 + }, + "ref" : false + } + ], + "id" : 2816, + "format" : "{} filter state. {}", + "annotation" : "Dump severity filter state" + }, + { + "name" : "typeDemo.ChoicePairEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.ChoicePair", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4355, + "format" : "Choices: {}", + "annotation" : "Multiple choice event via Structure" + }, + { + "name" : "health.HLTH_PING_WRONG_KEY", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "entry", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The entry passing the warning level" + }, + { + "name" : "badKey", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The incorrect key value" + } + ], + "id" : 8194, + "format" : "Ping entry {} responded with wrong key 0x{x}", + "annotation" : "Declare FATAL since task is no longer responding" + }, + { + "name" : "cmdSeq.CS_PortSequenceStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "filename", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The sequence file" + } + ], + "id" : 1551, + "format" : "Local request for sequence {} started.", + "annotation" : "A local port request to run a sequence was started" + }, + { + "name" : "cmdSeq.CS_InvalidMode", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 1547, + "format" : "Invalid mode", + "annotation" : "The Command Sequencer received a command that was invalid for its current mode." + }, + { + "name" : "fileDownlink.DownlinkPartialFail", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The source filename" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The destination file name" + }, + { + "name" : "startOffset", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Starting file offset in bytes" + }, + { + "name" : "filesize", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Size of source file" + } + ], + "id" : 1798, + "format" : "Error occurred during partial downlink of file {} to file {}. Offset {} greater than or equal to source filesize {}.", + "annotation" : "The File Downlink component has detected a timeout. Downlink has been canceled." + }, + { + "name" : "SG2.SignalGen_DpRecordFull", + "severity" : "WARNING_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 8707, + "format" : "DP container full with {} records and {} bytes. Closing DP." + }, + { + "name" : "fileManager.AppendFileStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "source", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file being read from" + }, + { + "name" : "target", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file to append to" + } + ], + "id" : 2060, + "format" : "Appending file {} to the end of {}...", + "annotation" : "The File System component appended 2 files without error" + }, + { + "name" : "dpCat.FileReadError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The file" + }, + { + "name" : "stat", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "status" + } + ], + "id" : 3608, + "format" : "Error reading DP file {} status {}", + "annotation" : "Error opening file", + "throttle" : 10 + }, + { + "name" : "SG5.SignalGen_DpStarted", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 9473, + "format" : "Writing {} DP records" + }, + { + "name" : "typeDemo.ChoicePairPrmEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.ChoicePair", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + }, + { + "name" : "validity", + "type" : { + "name" : "Fw.ParamValid", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4360, + "format" : "CHOICE_PAIR_PRM: {} with validity: {}", + "annotation" : "Multiple choice parameter event via Structure" + }, + { + "name" : "rateGroup3Comp.RateGroupCycleSlip", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "cycle", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The cycle where the cycle occurred" + } + ], + "id" : 1025, + "format" : "Rate group cycle slipped on cycle {}", + "annotation" : "Warning event that rate group has had a cycle slip" + }, + { + "name" : "prmDb.PrmFileReadError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "stage", + "type" : { + "name" : "Svc.PrmDb.PrmReadError", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "The read stage" + }, + { + "name" : "record", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The record that had the failure" + }, + { + "name" : "error", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The error code" + } + ], + "id" : 3334, + "format" : "Parameter file read failed in stage {} with record {} and error {}", + "annotation" : "Failed to read parameter file" + }, + { + "name" : "cmdSeq.CS_FileReadError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + } + ], + "id" : 1538, + "format" : "Error reading sequence file {}", + "annotation" : "The Sequence File Loader could not read the sequence file." + }, + { + "name" : "prmDb.PrmIdUpdated", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "Id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The parameter ID" + } + ], + "id" : 3329, + "format" : "Parameter ID 0x{x} updated", + "annotation" : "Parameter ID updated in database" + }, + { + "name" : "cmdDisp.InvalidCommand", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "Opcode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Invalid opcode" + } + ], + "id" : 1285, + "format" : "Invalid opcode 0x{x} received", + "annotation" : "Received an invalid opcode" + }, + { + "name" : "SG4.SignalGen_DpsNotConnected", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 9220, + "format" : "DP Ports not connected!" + }, + { + "name" : "fileManager.CreateDirectorySucceeded", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "dirName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the directory" + } + ], + "id" : 2056, + "format" : "Created directory {} successfully", + "annotation" : "The File System component created a new directory without error" + }, + { + "name" : "cmdSeq.CS_FileCrcFailure", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The sequence file" + }, + { + "name" : "storedCRC", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The CRC stored in the file" + }, + { + "name" : "computedCRC", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The CRC computed over the file" + } + ], + "id" : 1543, + "format" : "Sequence file {} had invalid CRC. Stored 0x{x}, Computed 0x{x}.", + "annotation" : "The sequence file validation failed" + }, + { + "name" : "SG1.SignalGen_SettingsChanged", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "Frequency", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "Amplitude", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "Phase", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false + }, + { + "name" : "SignalType", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 8448, + "format" : "Set Frequency(Hz) {}, Amplitude {f}, Phase {f}, Signal Type {}", + "annotation" : "Signal Generator Settings Changed" + }, + { + "name" : "cmdSeq.CS_SequenceLoaded", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + } + ], + "id" : 1536, + "format" : "Loaded sequence {}", + "annotation" : "Sequence file was successfully loaded." + }, + { + "name" : "cmdDisp.MalformedCommand", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "Status", + "type" : { + "name" : "Fw.DeserialStatus", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "The deserialization error" + } + ], + "id" : 1284, + "format" : "Received malformed command packet. Status: {}", + "annotation" : "Received a malformed command packet" + }, + { + "name" : "SG1.SignalGen_DpStarted", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 8449, + "format" : "Writing {} DP records" + }, + { + "name" : "fileDownlink.DownlinkPartialWarning", + "severity" : "WARNING_LO", + "formalParams" : [ + { + "name" : "startOffset", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Starting file offset in bytes" + }, + { + "name" : "length", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Number of bytes to downlink" + }, + { + "name" : "filesize", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Size of source file" + }, + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The source filename" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 100 + }, + "ref" : false, + "annotation" : "The destination file name" + } + ], + "id" : 1797, + "format" : "Offset {} plus length {} is greater than source size {} for partial downlink of file {} to file {}. ", + "annotation" : "The File Downlink component has detected a timeout. Downlink has been canceled." + }, + { + "name" : "dpCat.DirectoryOpenError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "loc", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The directory" + }, + { + "name" : "stat", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "status" + } + ], + "id" : 3584, + "format" : "Unable to process directory {} status {}", + "annotation" : "Error opening directory" + }, + { + "name" : "eventLogger.ID_FILTER_LIST_FULL", + "severity" : "WARNING_LO", + "formalParams" : [ + { + "name" : "ID", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The ID filtered" + } + ], + "id" : 2818, + "format" : "ID filter list is full. Cannot filter {} .", + "annotation" : "Attempted to add ID to full ID filter ID" + }, + { + "name" : "SG4.SignalGen_DpRecordFull", + "severity" : "WARNING_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 9219, + "format" : "DP container full with {} records and {} bytes. Closing DP." + }, + { + "name" : "cmdSeq.CS_ModeSwitched", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "mode", + "type" : { + "name" : "Svc.CmdSequencer.SeqMode", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "The new mode" + } + ], + "id" : 1553, + "format" : "Sequencer switched to {} step mode", + "annotation" : "Switched step mode" + }, + { + "name" : "dpBufferManager.NoBuffsAvailable", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "size", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The requested size" + } + ], + "id" : 19456, + "format" : "No available buffers of size {}", + "annotation" : "The BufferManager was unable to allocate a requested buffer", + "throttle" : 10 + }, + { + "name" : "fileUplinkBufferManager.NoBuffsAvailable", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "size", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The requested size" + } + ], + "id" : 17408, + "format" : "No available buffers of size {}", + "annotation" : "The BufferManager was unable to allocate a requested buffer", + "throttle" : 10 + }, + { + "name" : "fileUplink.PacketOutOfOrder", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "packetIndex", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The sequence index of the out-of-order packet" + }, + { + "name" : "lastPacketIndex", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The sequence index of the last packet received before the out-of-order packet" + } + ], + "id" : 2310, + "format" : "Received packet {} after packet {}", + "annotation" : "The File Uplink component encountered an out-of-order packet during file receipt", + "throttle" : 20 + }, + { + "name" : "SG3.SignalGen_DpComplete", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 8962, + "format" : "Writing {} DP records {} bytes total" + }, + { + "name" : "dpWriter.FileWriteError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "status", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The status code returned from the write operation" + }, + { + "name" : "bytesWritten", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The number of bytes successfully written" + }, + { + "name" : "bytesToWrite", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The number of bytes attempted" + }, + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The file" + } + ], + "id" : 4102, + "format" : "Error {} while writing {} of {} bytes to {}", + "annotation" : "An error occurred when writing to a file", + "throttle" : 10 + }, + { + "name" : "fileUplink.FileOpenError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The name of the file" + } + ], + "id" : 2305, + "format" : "Could not open file {}", + "annotation" : "An error occurred opening a file" + }, + { + "name" : "cmdDisp.TestCmd1Args", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "arg1", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "Arg1" + }, + { + "name" : "arg2", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "ref" : false, + "annotation" : "Arg2" + }, + { + "name" : "arg3", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "Arg3" + } + ], + "id" : 1289, + "format" : "TEST_CMD_1 args: I32: {}, F32: {f}, U8: {}", + "annotation" : "This log event message returns the TEST_CMD_1 arguments." + }, + { + "name" : "dpCat.DpCatalogFull", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "dp", + "type" : { + "name" : "Svc.DpRecord", + "kind" : "qualifiedIdentifier" + }, + "ref" : false, + "annotation" : "The DP" + } + ], + "id" : 3613, + "format" : "Catalog full trying to insert DP {}", + "annotation" : "Error inserting entry into list", + "throttle" : 10 + }, + { + "name" : "health.HLTH_CHECK_LOOKUP_ERROR", + "severity" : "WARNING_LO", + "formalParams" : [ + { + "name" : "entry", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The entry passing the warning level" + } + ], + "id" : 8197, + "format" : "Couldn't find entry {}", + "annotation" : "Entry was not found" + }, + { + "name" : "prmDb.PrmIdAdded", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "Id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The parameter ID" + } + ], + "id" : 3331, + "format" : "Parameter ID 0x{x} added", + "annotation" : "Parameter ID added to database" + }, + { + "name" : "cmdSeq.CS_CmdStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "filename", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The sequence file" + } + ], + "id" : 1558, + "format" : "Sequence {} started", + "annotation" : "A manual sequence was started" + }, + { + "name" : "dpCat.ProcessingDirectory", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "directory", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The directory" + } + ], + "id" : 3585, + "format" : "Processing directory {}", + "annotation" : "Processing directory" + }, + { + "name" : "dpCat.ProductComplete", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The file" + } + ], + "id" : 3598, + "format" : "Product {} complete", + "annotation" : "Product send complete" + }, + { + "name" : "fileManager.FileSizeSucceeded", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file" + }, + { + "name" : "size", + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "ref" : false, + "annotation" : "The size of the file in bytes" + } + ], + "id" : 2066, + "format" : "The size of file {} is {} B", + "annotation" : "File size response" + }, + { + "name" : "dpWriter.InvalidHeaderHash", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "bufferSize", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The incoming buffer size" + }, + { + "name" : "storedHash", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The stored hash value" + }, + { + "name" : "computedHash", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The computed hash value" + } + ], + "id" : 4098, + "format" : "Received a buffer of size {} with an invalid header hash (stored {x}, computed {x})", + "annotation" : "The received buffer has an invalid header hash", + "throttle" : 10 + }, + { + "name" : "cmdDisp.OpCodeRegistered", + "severity" : "DIAGNOSTIC", + "formalParams" : [ + { + "name" : "Opcode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The opcode to register" + }, + { + "name" : "port", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The registration port" + }, + { + "name" : "slot", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "ref" : false, + "annotation" : "The dispatch slot it was placed in" + } + ], + "id" : 1280, + "format" : "Opcode 0x{x} registered to port {} slot {}" + }, + { + "name" : "cmdSeq.CS_CommandError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + }, + { + "name" : "recordNumber", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The record number" + }, + { + "name" : "opCode", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The opcode" + }, + { + "name" : "errorStatus", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The error status" + } + ], + "id" : 1546, + "format" : "Sequence file {}: Command {} (opcode {}) completed with error {}", + "annotation" : "The Command Sequencer issued a command and received an error status in return." + }, + { + "name" : "fileManager.FileMoveError", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "sourceFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the source file" + }, + { + "name" : "destFileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the destination file" + }, + { + "name" : "status", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The error status" + } + ], + "id" : 2050, + "format" : "Could not move file {} to file {}, returned status {}", + "annotation" : "An error occurred while attempting to move a file" + }, + { + "name" : "typeDemo.ChoicePrmEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "choice", + "type" : { + "name" : "Ref.Choice", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + }, + { + "name" : "validity", + "type" : { + "name" : "Fw.ParamValid", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4357, + "format" : "CHOICE_PRM: {} with validity: {}", + "annotation" : "Single choice parameter event" + }, + { + "name" : "sendBuffComp.FirstPacketSent", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The ID argument" + } + ], + "id" : 9728, + "format" : "First packet ID {} received", + "annotation" : "First packet send" + }, + { + "name" : "typeDemo.ChoiceSlurryEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "choices", + "type" : { + "name" : "Ref.ChoiceSlurry", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4356, + "format" : "Choices: {}", + "annotation" : "Multiple choice event via Complex Structure" + }, + { + "name" : "health.HLTH_PING_LATE", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "entry", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The entry passing the warning level" + } + ], + "id" : 8193, + "format" : "Ping entry {} did not respond", + "annotation" : "Declare FATAL since task is no longer responding" + }, + { + "name" : "dpBufferManager.ZeroSizeBuffer", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 19457, + "format" : "Received zero size buffer", + "annotation" : "The buffer manager received a zero-sized buffer as a return. Probably undetected empty buffer allocation", + "throttle" : 10 + }, + { + "name" : "prmDb.PrmIdNotFound", + "severity" : "WARNING_LO", + "formalParams" : [ + { + "name" : "Id", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "The parameter ID" + } + ], + "id" : 3328, + "format" : "Parameter ID 0x{x} not found", + "annotation" : "Parameter ID not found in database.", + "throttle" : 5 + }, + { + "name" : "systemResources.FRAMEWORK_VERSION", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "version", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "version string" + } + ], + "id" : 19200, + "format" : "Framework Version: [{}]", + "annotation" : "Version of the git repository." + }, + { + "name" : "fatalAdapter.AF_ASSERT_5", + "severity" : "FATAL", + "formalParams" : [ + { + "name" : "file", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 80 + }, + "ref" : false, + "annotation" : "The source file of the assert" + }, + { + "name" : "line", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Line number of the assert" + }, + { + "name" : "arg1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "First assert argument" + }, + { + "name" : "arg2", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Second assert argument" + }, + { + "name" : "arg3", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Third assert argument" + }, + { + "name" : "arg4", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Fourth assert argument" + }, + { + "name" : "arg5", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false, + "annotation" : "Fifth assert argument" + } + ], + "id" : 16901, + "format" : "Assert in file {}, line {}: {} {} {} {} {}", + "annotation" : "An assert happened" + }, + { + "name" : "cmdDisp.NoOpStringReceived", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "message", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "ref" : false, + "annotation" : "The NO-OP string that is generated" + } + ], + "id" : 1288, + "format" : "Received a NO-OP string={}", + "annotation" : "The command dispatcher has successfully received a NO-OP command from GUI with a string" + }, + { + "name" : "SG2.SignalGen_DpComplete", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 8706, + "format" : "Writing {} DP records {} bytes total" + }, + { + "name" : "fileManager.RemoveDirectoryStarted", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "dirName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the directory" + } + ], + "id" : 2063, + "format" : "Removing directory {}...", + "annotation" : "The File System component began deleting a directory" + }, + { + "name" : "fileUplinkBufferManager.ZeroSizeBuffer", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 17409, + "format" : "Received zero size buffer", + "annotation" : "The buffer manager received a zero-sized buffer as a return. Probably undetected empty buffer allocation", + "throttle" : 10 + }, + { + "name" : "SG5.SignalGen_DpComplete", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + }, + { + "name" : "bytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 9474, + "format" : "Writing {} DP records {} bytes total" + }, + { + "name" : "cmdSeq.CS_TimeContextMismatch", + "severity" : "WARNING_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + }, + { + "name" : "currTimeBase", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "The current time base" + }, + { + "name" : "seqTimeBase", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "ref" : false, + "annotation" : "The sequence time base" + } + ], + "id" : 1550, + "format" : "Sequence file {}: Current time context doesn't match sequence context: base: {} seq: {}", + "annotation" : "The running time base doesn't match the time base in the sequence files" + }, + { + "name" : "typeDemo.ScalarStructEv", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "scalar_argument", + "type" : { + "name" : "Ref.ScalarStruct", + "kind" : "qualifiedIdentifier" + }, + "ref" : false + } + ], + "id" : 4363, + "format" : "ScalarStruct: {}", + "annotation" : "Event for scalar struct" + }, + { + "name" : "dpCat.ComponentNoMemory", + "severity" : "WARNING_HI", + "formalParams" : [ + ], + "id" : 3605, + "format" : "DpCatalog couldn't get memory", + "annotation" : "Component didn't get memory error", + "throttle" : 10 + }, + { + "name" : "cmdSeq.CS_SequenceCanceled", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 60 + }, + "ref" : false, + "annotation" : "The name of the sequence file" + } + ], + "id" : 1537, + "format" : "Sequence file {} canceled", + "annotation" : "A command sequence was successfully canceled." + }, + { + "name" : "fileManager.RemoveFileSucceeded", + "severity" : "ACTIVITY_HI", + "formalParams" : [ + { + "name" : "fileName", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 256 + }, + "ref" : false, + "annotation" : "The name of the file" + } + ], + "id" : 2059, + "format" : "Removed file {} successfully", + "annotation" : "The File System component deleted an existing file without error" + }, + { + "name" : "SG3.SignalGen_DpStarted", + "severity" : "ACTIVITY_LO", + "formalParams" : [ + { + "name" : "records", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "ref" : false + } + ], + "id" : 8961, + "format" : "Writing {} DP records" + } + ], + "telemetryChannels" : [ + { + "name" : "pingRcvr.PR_NumPings", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 2560, + "telemetryUpdate" : "always", + "annotation" : "Number of pings received" + }, + { + "name" : "SG1.PairHistory", + "type" : { + "name" : "Ref.SignalPairSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 8452, + "telemetryUpdate" : "always", + "annotation" : "Last 10 (time, value) pairs of the signal" + }, + { + "name" : "recvBuffComp.Parameter2", + "type" : { + "name" : "I16", + "kind" : "integer", + "size" : 16, + "signed" : true + }, + "id" : 18180, + "telemetryUpdate" : "on change", + "annotation" : "Readback of Parameter2", + "limits" : { + "high" : { + "red" : 3, + "orange" : 2, + "yellow" : 1 + }, + "low" : { + "red" : -3, + "orange" : -2, + "yellow" : -1 + } + } + }, + { + "name" : "systemResources.CPU", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19204, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "SG3.Type", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "id" : 8960, + "telemetryUpdate" : "always", + "annotation" : "Type of the output signal: SINE, TRIANGLE, etc." + }, + { + "name" : "rateGroup3Comp.RgMaxTime", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1024, + "telemetryUpdate" : "on change", + "format" : "{} us", + "annotation" : "Max execution time rate group" + }, + { + "name" : "fileUplink.Warnings", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 2306, + "telemetryUpdate" : "always", + "annotation" : "The total number of warnings issued" + }, + { + "name" : "sendBuffComp.Parameter4", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 9731, + "telemetryUpdate" : "on change", + "annotation" : "Readback of Parameter4" + }, + { + "name" : "SG4.DpBytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 9222, + "telemetryUpdate" : "always", + "annotation" : "DP bytes written" + }, + { + "name" : "SG1.PairOutput", + "type" : { + "name" : "Ref.SignalPair", + "kind" : "qualifiedIdentifier" + }, + "id" : 8450, + "telemetryUpdate" : "always", + "annotation" : "Single (time, value) pair of the signal" + }, + { + "name" : "SG2.Info", + "type" : { + "name" : "Ref.SignalInfo", + "kind" : "qualifiedIdentifier" + }, + "id" : 8709, + "telemetryUpdate" : "always", + "annotation" : "Composite field of signal information, containing histories, pairs etc" + }, + { + "name" : "fileDownlink.PacketsSent", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1793, + "telemetryUpdate" : "always", + "annotation" : "The total number of packets sent" + }, + { + "name" : "systemResources.CPU_08", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19213, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "fileUplinkBufferManager.NoBuffs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 17411, + "telemetryUpdate" : "on change", + "annotation" : "The number of requests that couldn't return a buffer", + "limits" : { + "high" : { + "red" : 1 + } + } + }, + { + "name" : "recvBuffComp.Sensor2", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 18178, + "telemetryUpdate" : "always", + "annotation" : "Value of Sensor3" + }, + { + "name" : "SG3.History", + "type" : { + "name" : "Ref.SignalSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 8963, + "telemetryUpdate" : "always", + "annotation" : "Last 10 Y values of the signal" + }, + { + "name" : "dpWriter.NumBytesWritten", + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "id" : 4097, + "telemetryUpdate" : "on change", + "annotation" : "The number of bytes written" + }, + { + "name" : "SG4.PairOutput", + "type" : { + "name" : "Ref.SignalPair", + "kind" : "qualifiedIdentifier" + }, + "id" : 9218, + "telemetryUpdate" : "always", + "annotation" : "Single (time, value) pair of the signal" + }, + { + "name" : "SG5.PairHistory", + "type" : { + "name" : "Ref.SignalPairSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 9476, + "telemetryUpdate" : "always", + "annotation" : "Last 10 (time, value) pairs of the signal" + }, + { + "name" : "systemResources.CPU_14", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19219, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "dpBufferManager.HiBuffs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 19458, + "telemetryUpdate" : "on change", + "annotation" : "The high water mark of allocated buffers" + }, + { + "name" : "SG2.Output", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 8705, + "telemetryUpdate" : "always", + "format" : "{.4f}", + "annotation" : "Single Y value of the output" + }, + { + "name" : "systemResources.CPU_04", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19209, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "fileDownlink.FilesSent", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1792, + "telemetryUpdate" : "always", + "annotation" : "The total number of files sent" + }, + { + "name" : "SG3.DpRecords", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 8967, + "telemetryUpdate" : "always", + "annotation" : "DP records written" + }, + { + "name" : "SG4.Type", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "id" : 9216, + "telemetryUpdate" : "always", + "annotation" : "Type of the output signal: SINE, TRIANGLE, etc." + }, + { + "name" : "dpMgr.NumSuccessfulAllocations", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 3840, + "telemetryUpdate" : "on change", + "annotation" : "The number of successful buffer allocations" + }, + { + "name" : "typeDemo.ChoicesCh", + "type" : { + "name" : "Ref.ManyChoices", + "kind" : "qualifiedIdentifier" + }, + "id" : 4353, + "telemetryUpdate" : "always", + "annotation" : "Multiple choice channel via Array" + }, + { + "name" : "SG5.History", + "type" : { + "name" : "Ref.SignalSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 9475, + "telemetryUpdate" : "always", + "annotation" : "Last 10 Y values of the signal" + }, + { + "name" : "typeDemo.Float2Ch", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 4358, + "telemetryUpdate" : "always", + "annotation" : "Float output channel 2" + }, + { + "name" : "fileManager.Errors", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 2049, + "telemetryUpdate" : "always", + "annotation" : "The total number of errors" + }, + { + "name" : "systemResources.CPU_01", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19206, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "fileUplinkBufferManager.HiBuffs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 17410, + "telemetryUpdate" : "on change", + "annotation" : "The high water mark of allocated buffers" + }, + { + "name" : "systemResources.MEMORY_USED", + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "id" : 19201, + "telemetryUpdate" : "always", + "format" : "{} KB", + "annotation" : "System memory used in KB" + }, + { + "name" : "systemResources.CPU_11", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19216, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "SG1.DpBytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 8454, + "telemetryUpdate" : "always", + "annotation" : "DP bytes written" + }, + { + "name" : "SG5.Type", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "id" : 9472, + "telemetryUpdate" : "always", + "annotation" : "Type of the output signal: SINE, TRIANGLE, etc." + }, + { + "name" : "rateGroup1Comp.RgMaxTime", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 512, + "telemetryUpdate" : "on change", + "format" : "{} us", + "annotation" : "Max execution time rate group" + }, + { + "name" : "SG4.Info", + "type" : { + "name" : "Ref.SignalInfo", + "kind" : "qualifiedIdentifier" + }, + "id" : 9221, + "telemetryUpdate" : "always", + "annotation" : "Composite field of signal information, containing histories, pairs etc" + }, + { + "name" : "recvBuffComp.Sensor1", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 18177, + "telemetryUpdate" : "always", + "format" : "{.2f}V", + "annotation" : "Value of Sensor1" + }, + { + "name" : "dpWriter.NumErrors", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 4100, + "telemetryUpdate" : "on change", + "annotation" : "The number of errors" + }, + { + "name" : "systemResources.CPU_13", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19218, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "SG4.Output", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 9217, + "telemetryUpdate" : "always", + "format" : "{.4f}", + "annotation" : "Single Y value of the output" + }, + { + "name" : "systemResources.CPU_09", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19214, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "SG3.PairHistory", + "type" : { + "name" : "Ref.SignalPairSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 8964, + "telemetryUpdate" : "always", + "annotation" : "Last 10 (time, value) pairs of the signal" + }, + { + "name" : "cmdDisp.CommandErrors", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1281, + "telemetryUpdate" : "on change", + "annotation" : "Number of command errors" + }, + { + "name" : "sendBuffComp.Parameter3", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "id" : 9730, + "telemetryUpdate" : "on change", + "annotation" : "Readback of Parameter3" + }, + { + "name" : "fileDownlink.Warnings", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1794, + "telemetryUpdate" : "always", + "annotation" : "The total number of warnings" + }, + { + "name" : "fileUplinkBufferManager.EmptyBuffs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 17412, + "telemetryUpdate" : "on change", + "annotation" : "The number of empty buffers returned", + "limits" : { + "high" : { + "red" : 1 + } + } + }, + { + "name" : "systemResources.NON_VOLATILE_FREE", + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "id" : 19203, + "telemetryUpdate" : "always", + "format" : "{} KB", + "annotation" : "System non-volatile available in KB" + }, + { + "name" : "SG1.History", + "type" : { + "name" : "Ref.SignalSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 8451, + "telemetryUpdate" : "always", + "annotation" : "Last 10 Y values of the signal" + }, + { + "name" : "cmdSeq.CS_SequencesCompleted", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1540, + "telemetryUpdate" : "always", + "annotation" : "The number of sequences completed." + }, + { + "name" : "blockDrv.BD_Cycles", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 256, + "telemetryUpdate" : "always", + "annotation" : "Driver cycle count" + }, + { + "name" : "SG2.Type", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "id" : 8704, + "telemetryUpdate" : "always", + "annotation" : "Type of the output signal: SINE, TRIANGLE, etc." + }, + { + "name" : "systemResources.CPU_05", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19210, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "SG5.Info", + "type" : { + "name" : "Ref.SignalInfo", + "kind" : "qualifiedIdentifier" + }, + "id" : 9477, + "telemetryUpdate" : "always", + "annotation" : "Composite field of signal information, containing histories, pairs etc" + }, + { + "name" : "fileUplink.FilesReceived", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 2304, + "telemetryUpdate" : "always", + "annotation" : "The total number of complete files received" + }, + { + "name" : "cmdSeq.CS_CommandsExecuted", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1539, + "telemetryUpdate" : "always", + "annotation" : "The number of commands executed across all sequences." + }, + { + "name" : "recvBuffComp.PktState", + "type" : { + "name" : "Ref.PacketStat", + "kind" : "qualifiedIdentifier" + }, + "id" : 18176, + "telemetryUpdate" : "always", + "annotation" : "Packet Statistics" + }, + { + "name" : "SG1.DpRecords", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 8455, + "telemetryUpdate" : "always", + "annotation" : "DP records written" + }, + { + "name" : "dpBufferManager.NoBuffs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 19459, + "telemetryUpdate" : "on change", + "annotation" : "The number of requests that couldn't return a buffer", + "limits" : { + "high" : { + "red" : 1 + } + } + }, + { + "name" : "systemResources.PROJECT_VERSION", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "id" : 19222, + "telemetryUpdate" : "always", + "annotation" : "Software project version" + }, + { + "name" : "typeDemo.ChoiceCh", + "type" : { + "name" : "Ref.Choice", + "kind" : "qualifiedIdentifier" + }, + "id" : 4352, + "telemetryUpdate" : "always", + "annotation" : "Single choice channel" + }, + { + "name" : "dpMgr.NumFailedAllocations", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 3841, + "telemetryUpdate" : "on change", + "annotation" : "The number of failed buffer allocations" + }, + { + "name" : "SG2.PairHistory", + "type" : { + "name" : "Ref.SignalPairSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 8708, + "telemetryUpdate" : "always", + "annotation" : "Last 10 (time, value) pairs of the signal" + }, + { + "name" : "rateGroup1Comp.RgCycleSlips", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 513, + "telemetryUpdate" : "on change", + "annotation" : "Cycle slips for rate group" + }, + { + "name" : "typeDemo.ExtraChoicesCh", + "type" : { + "name" : "Ref.TooManyChoices", + "kind" : "qualifiedIdentifier" + }, + "id" : 4354, + "telemetryUpdate" : "always", + "annotation" : "Too many choice channel via Array" + }, + { + "name" : "typeDemo.Float3Ch", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 4359, + "telemetryUpdate" : "always", + "annotation" : "Float output channel 3" + }, + { + "name" : "fileManager.CommandsExecuted", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 2048, + "telemetryUpdate" : "always", + "annotation" : "The total number of commands successfully executed" + }, + { + "name" : "systemResources.CPU_10", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19215, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "systemResources.CPU_12", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19217, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "SG2.DpRecords", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 8711, + "telemetryUpdate" : "always", + "annotation" : "DP records written" + }, + { + "name" : "systemResources.NON_VOLATILE_TOTAL", + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "id" : 19202, + "telemetryUpdate" : "always", + "format" : "{} KB", + "annotation" : "System non-volatile available in KB" + }, + { + "name" : "dpWriter.NumBuffersReceived", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 4096, + "telemetryUpdate" : "on change", + "annotation" : "The number of buffers received" + }, + { + "name" : "dpWriter.NumFailedWrites", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 4099, + "telemetryUpdate" : "on change", + "annotation" : "The number of failed writes" + }, + { + "name" : "sendBuffComp.NumErrorsInjected", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 9729, + "telemetryUpdate" : "on change", + "annotation" : "Number of errors injected" + }, + { + "name" : "systemResources.CPU_03", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19208, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "health.PingLateWarnings", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 8192, + "telemetryUpdate" : "always", + "annotation" : "Number of overrun warnings" + }, + { + "name" : "rateGroup2Comp.RgCycleSlips", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 769, + "telemetryUpdate" : "on change", + "annotation" : "Cycle slips for rate group" + }, + { + "name" : "SG5.DpBytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 9478, + "telemetryUpdate" : "always", + "annotation" : "DP bytes written" + }, + { + "name" : "rateGroup2Comp.RgMaxTime", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 768, + "telemetryUpdate" : "on change", + "format" : "{} us", + "annotation" : "Max execution time rate group" + }, + { + "name" : "SG3.Info", + "type" : { + "name" : "Ref.SignalInfo", + "kind" : "qualifiedIdentifier" + }, + "id" : 8965, + "telemetryUpdate" : "always", + "annotation" : "Composite field of signal information, containing histories, pairs etc" + }, + { + "name" : "typeDemo.ChoicePairCh", + "type" : { + "name" : "Ref.ChoicePair", + "kind" : "qualifiedIdentifier" + }, + "id" : 4355, + "telemetryUpdate" : "always", + "annotation" : "Multiple choice channel via Structure" + }, + { + "name" : "dpMgr.NumDataProducts", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 3842, + "telemetryUpdate" : "on change", + "annotation" : "Number of data products handled" + }, + { + "name" : "dpBufferManager.EmptyBuffs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 19460, + "telemetryUpdate" : "on change", + "annotation" : "The number of empty buffers returned", + "limits" : { + "high" : { + "red" : 1 + } + } + }, + { + "name" : "systemResources.CPU_06", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19211, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "SG5.Output", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 9473, + "telemetryUpdate" : "always", + "format" : "{.4f}", + "annotation" : "Single Y value of the output" + }, + { + "name" : "typeDemo.FloatSet", + "type" : { + "name" : "Ref.FloatSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 4360, + "telemetryUpdate" : "always", + "annotation" : "Float set output channel" + }, + { + "name" : "rateGroup3Comp.RgCycleSlips", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1025, + "telemetryUpdate" : "on change", + "annotation" : "Cycle slips for rate group" + }, + { + "name" : "systemResources.FRAMEWORK_VERSION", + "type" : { + "name" : "string", + "kind" : "string", + "size" : 40 + }, + "id" : 19221, + "telemetryUpdate" : "always", + "annotation" : "Software framework version" + }, + { + "name" : "SG2.History", + "type" : { + "name" : "Ref.SignalSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 8707, + "telemetryUpdate" : "always", + "annotation" : "Last 10 Y values of the signal" + }, + { + "name" : "cmdSeq.CS_Errors", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1538, + "telemetryUpdate" : "always", + "annotation" : "The number of errors that have occurred" + }, + { + "name" : "SG4.PairHistory", + "type" : { + "name" : "Ref.SignalPairSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 9220, + "telemetryUpdate" : "always", + "annotation" : "Last 10 (time, value) pairs of the signal" + }, + { + "name" : "SG1.Type", + "type" : { + "name" : "Ref.SignalType", + "kind" : "qualifiedIdentifier" + }, + "id" : 8448, + "telemetryUpdate" : "always", + "annotation" : "Type of the output signal: SINE, TRIANGLE, etc." + }, + { + "name" : "cmdSeq.CS_LoadCommands", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1536, + "telemetryUpdate" : "always", + "annotation" : "The number of Load commands executed" + }, + { + "name" : "SG1.Output", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 8449, + "telemetryUpdate" : "always", + "format" : "{.4f}", + "annotation" : "Single Y value of the output" + }, + { + "name" : "sendBuffComp.SendState", + "type" : { + "name" : "Ref.SendBuff.ActiveState", + "kind" : "qualifiedIdentifier" + }, + "id" : 9732, + "telemetryUpdate" : "always", + "annotation" : "Readback of Parameter4" + }, + { + "name" : "dpCat.CatalogDps", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 3584, + "telemetryUpdate" : "always", + "annotation" : "Number of data products in catalog" + }, + { + "name" : "SG4.History", + "type" : { + "name" : "Ref.SignalSet", + "kind" : "qualifiedIdentifier" + }, + "id" : 9219, + "telemetryUpdate" : "always", + "annotation" : "Last 10 Y values of the signal" + }, + { + "name" : "dpBufferManager.TotalBuffs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 19456, + "telemetryUpdate" : "on change", + "annotation" : "The total buffers allocated" + }, + { + "name" : "SG3.PairOutput", + "type" : { + "name" : "Ref.SignalPair", + "kind" : "qualifiedIdentifier" + }, + "id" : 8962, + "telemetryUpdate" : "always", + "annotation" : "Single (time, value) pair of the signal" + }, + { + "name" : "fileUplink.PacketsReceived", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 2305, + "telemetryUpdate" : "always", + "annotation" : "The total number of packets received" + }, + { + "name" : "systemResources.CPU_15", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19220, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "recvBuffComp.Parameter1", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 18179, + "telemetryUpdate" : "on change", + "annotation" : "Readback of Parameter1" + }, + { + "name" : "fileUplinkBufferManager.TotalBuffs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 17408, + "telemetryUpdate" : "on change", + "annotation" : "The total buffers allocated" + }, + { + "name" : "dpCat.DpsSent", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 3585, + "telemetryUpdate" : "always", + "annotation" : "Number of data products sent" + }, + { + "name" : "SG4.DpRecords", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 9223, + "telemetryUpdate" : "always", + "annotation" : "DP records written" + }, + { + "name" : "dpWriter.NumSuccessfulWrites", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 4098, + "telemetryUpdate" : "on change", + "annotation" : "The number of successful writes" + }, + { + "name" : "SG2.DpBytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 8710, + "telemetryUpdate" : "always", + "annotation" : "DP bytes written" + }, + { + "name" : "cmdDisp.CommandsDispatched", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1280, + "telemetryUpdate" : "on change", + "annotation" : "Number of commands dispatched" + }, + { + "name" : "typeDemo.ChoiceSlurryCh", + "type" : { + "name" : "Ref.ChoiceSlurry", + "kind" : "qualifiedIdentifier" + }, + "id" : 4356, + "telemetryUpdate" : "always", + "annotation" : "Multiple choice channel via Complex Structure" + }, + { + "name" : "systemResources.CPU_00", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19205, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "systemResources.CPU_02", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19207, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "typeDemo.Float1Ch", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 4357, + "telemetryUpdate" : "always", + "annotation" : "Float output channel 1" + }, + { + "name" : "sendBuffComp.PacketsSent", + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "id" : 9728, + "telemetryUpdate" : "always", + "annotation" : "Number of packets sent" + }, + { + "name" : "dpBufferManager.CurrBuffs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 19457, + "telemetryUpdate" : "on change", + "annotation" : "The current number of allocated buffers" + }, + { + "name" : "systemResources.CPU_07", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 19212, + "telemetryUpdate" : "always", + "format" : "{.2f} percent", + "annotation" : "System's CPU Percentage" + }, + { + "name" : "systemResources.MEMORY_TOTAL", + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "id" : 19200, + "telemetryUpdate" : "always", + "format" : "{} KB", + "annotation" : "Total system memory in KB" + }, + { + "name" : "SG2.PairOutput", + "type" : { + "name" : "Ref.SignalPair", + "kind" : "qualifiedIdentifier" + }, + "id" : 8706, + "telemetryUpdate" : "always", + "annotation" : "Single (time, value) pair of the signal" + }, + { + "name" : "dpMgr.NumBytes", + "type" : { + "name" : "U64", + "kind" : "integer", + "size" : 64, + "signed" : false + }, + "id" : 3843, + "telemetryUpdate" : "on change", + "annotation" : "Number of bytes handled" + }, + { + "name" : "fileUplinkBufferManager.CurrBuffs", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 17409, + "telemetryUpdate" : "on change", + "annotation" : "The current number of allocated buffers" + }, + { + "name" : "cmdSeq.CS_CancelCommands", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 1537, + "telemetryUpdate" : "always", + "annotation" : "The number of Cancel commands executed" + }, + { + "name" : "SG5.PairOutput", + "type" : { + "name" : "Ref.SignalPair", + "kind" : "qualifiedIdentifier" + }, + "id" : 9474, + "telemetryUpdate" : "always", + "annotation" : "Single (time, value) pair of the signal" + }, + { + "name" : "SG1.Info", + "type" : { + "name" : "Ref.SignalInfo", + "kind" : "qualifiedIdentifier" + }, + "id" : 8453, + "telemetryUpdate" : "always", + "annotation" : "Composite field of signal information, containing histories, pairs etc" + }, + { + "name" : "SG3.Output", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "id" : 8961, + "telemetryUpdate" : "always", + "format" : "{.4f}", + "annotation" : "Single Y value of the output" + }, + { + "name" : "SG5.DpRecords", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 9479, + "telemetryUpdate" : "always", + "annotation" : "DP records written" + }, + { + "name" : "SG3.DpBytes", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "id" : 8966, + "telemetryUpdate" : "always", + "annotation" : "DP bytes written" + } + ], + "records" : [ + { + "name" : "dpTool.F64Record", + "type" : { + "name" : "F64", + "kind" : "float", + "size" : 64 + }, + "array" : false, + "id" : 5383, + "annotation" : "Record 8" + }, + { + "name" : "SG4.DataRecord", + "type" : { + "name" : "Ref.SignalInfo", + "kind" : "qualifiedIdentifier" + }, + "array" : false, + "id" : 9216, + "annotation" : "Signal generation data product record" + }, + { + "name" : "SG5.DataRecord", + "type" : { + "name" : "Ref.SignalInfo", + "kind" : "qualifiedIdentifier" + }, + "array" : false, + "id" : 9472, + "annotation" : "Signal generation data product record" + }, + { + "name" : "dpTool.DataArrayRecord", + "type" : { + "name" : "Svc.DpTool.Data", + "kind" : "qualifiedIdentifier" + }, + "array" : true, + "id" : 5380, + "annotation" : "Record 5" + }, + { + "name" : "dpTool.EnumRecord", + "type" : { + "name" : "Svc.DpTool.EnumStruct", + "kind" : "qualifiedIdentifier" + }, + "array" : false, + "id" : 5381, + "annotation" : "Record 6" + }, + { + "name" : "dpTool.ComplexRecord", + "type" : { + "name" : "Svc.DpTool.Complex", + "kind" : "qualifiedIdentifier" + }, + "array" : false, + "id" : 5377, + "annotation" : "Record 2" + }, + { + "name" : "dpTool.I64Record", + "type" : { + "name" : "I64", + "kind" : "integer", + "size" : 64, + "signed" : true + }, + "array" : false, + "id" : 5388, + "annotation" : "Record 13" + }, + { + "name" : "SG1.DataRecord", + "type" : { + "name" : "Ref.SignalInfo", + "kind" : "qualifiedIdentifier" + }, + "array" : false, + "id" : 8448, + "annotation" : "Signal generation data product record" + }, + { + "name" : "dpTool.F32Record", + "type" : { + "name" : "F32", + "kind" : "float", + "size" : 32 + }, + "array" : false, + "id" : 5382, + "annotation" : "Record 7" + }, + { + "name" : "dpTool.U8ArrayRecord", + "type" : { + "name" : "U8", + "kind" : "integer", + "size" : 8, + "signed" : false + }, + "array" : true, + "id" : 5378, + "annotation" : "Record 3" + }, + { + "name" : "dpTool.U32Record", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "array" : false, + "id" : 5376, + "annotation" : "Record 1" + }, + { + "name" : "dpTool.I8Record", + "type" : { + "name" : "I8", + "kind" : "integer", + "size" : 8, + "signed" : true + }, + "array" : false, + "id" : 5385, + "annotation" : "Record 10" + }, + { + "name" : "SG3.DataRecord", + "type" : { + "name" : "Ref.SignalInfo", + "kind" : "qualifiedIdentifier" + }, + "array" : false, + "id" : 8960, + "annotation" : "Signal generation data product record" + }, + { + "name" : "dpTool.U32ArrayRecord", + "type" : { + "name" : "U32", + "kind" : "integer", + "size" : 32, + "signed" : false + }, + "array" : true, + "id" : 5379, + "annotation" : "Record 4" + }, + { + "name" : "dpTool.BoolRecord", + "type" : { + "name" : "bool", + "kind" : "bool", + "size" : 8 + }, + "array" : false, + "id" : 5384, + "annotation" : "Record 9" + }, + { + "name" : "SG2.DataRecord", + "type" : { + "name" : "Ref.SignalInfo", + "kind" : "qualifiedIdentifier" + }, + "array" : false, + "id" : 8704, + "annotation" : "Signal generation data product record" + }, + { + "name" : "dpTool.I32Record", + "type" : { + "name" : "I32", + "kind" : "integer", + "size" : 32, + "signed" : true + }, + "array" : false, + "id" : 5387, + "annotation" : "Record 12" + }, + { + "name" : "dpTool.I16Record", + "type" : { + "name" : "I16", + "kind" : "integer", + "size" : 16, + "signed" : true + }, + "array" : false, + "id" : 5386, + "annotation" : "Record 11" + }, + { + "name" : "dpTool.FppArrayRecord", + "type" : { + "name" : "Svc.DpTool.ArrayData", + "kind" : "qualifiedIdentifier" + }, + "array" : false, + "id" : 5389, + "annotation" : "Record 14" + } + ], + "containers" : [ + { + "name" : "SG4.DataContainer", + "id" : 9216, + "defaultPriority" : 10, + "annotation" : "Data product container" + }, + { + "name" : "SG5.DataContainer", + "id" : 9472, + "defaultPriority" : 10, + "annotation" : "Data product container" + }, + { + "name" : "SG2.DataContainer", + "id" : 8704, + "defaultPriority" : 10, + "annotation" : "Data product container" + }, + { + "name" : "SG1.DataContainer", + "id" : 8448, + "defaultPriority" : 10, + "annotation" : "Data product container" + }, + { + "name" : "SG3.DataContainer", + "id" : 8960, + "defaultPriority" : 10, + "annotation" : "Data product container" + }, + { + "name" : "dpTool.Container1", + "id" : 5390, + "defaultPriority" : 10, + "annotation" : "Container 1" + } + ] +} diff --git a/test/fprime_gds/executables/dp_writer_data/makeBool.bin b/test/fprime_gds/executables/dp_writer_data/makeBool.bin new file mode 100644 index 00000000..0719afd2 Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeBool.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeComplex.bin b/test/fprime_gds/executables/dp_writer_data/makeComplex.bin new file mode 100644 index 00000000..6c8661fd Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeComplex.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin b/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin new file mode 100644 index 00000000..5409b788 Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeDataArray.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeEnum.bin b/test/fprime_gds/executables/dp_writer_data/makeEnum.bin new file mode 100644 index 00000000..620d122c Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeEnum.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeF32.bin b/test/fprime_gds/executables/dp_writer_data/makeF32.bin new file mode 100644 index 00000000..1f0d150d Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeF32.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeF64.bin b/test/fprime_gds/executables/dp_writer_data/makeF64.bin new file mode 100644 index 00000000..4445299f Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeF64.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin b/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin new file mode 100644 index 00000000..6dd11b45 Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeFppArray.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeI16.bin b/test/fprime_gds/executables/dp_writer_data/makeI16.bin new file mode 100644 index 00000000..a1416735 Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeI16.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeI32.bin b/test/fprime_gds/executables/dp_writer_data/makeI32.bin new file mode 100644 index 00000000..610d6dc0 Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeI32.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeI64.bin b/test/fprime_gds/executables/dp_writer_data/makeI64.bin new file mode 100644 index 00000000..90ea49a0 Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeI64.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeI8.bin b/test/fprime_gds/executables/dp_writer_data/makeI8.bin new file mode 100644 index 00000000..eb7c783b Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeI8.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeU32.bin b/test/fprime_gds/executables/dp_writer_data/makeU32.bin new file mode 100644 index 00000000..ef4618fe Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeU32.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin b/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin new file mode 100644 index 00000000..bd01b3ba Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeU32Array.bin differ diff --git a/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin b/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin new file mode 100644 index 00000000..4ecfbee8 Binary files /dev/null and b/test/fprime_gds/executables/dp_writer_data/makeU8Array.bin differ diff --git a/test/fprime_gds/executables/test_data_product_writer.py b/test/fprime_gds/executables/test_data_product_writer.py new file mode 100644 index 00000000..6ef8d513 --- /dev/null +++ b/test/fprime_gds/executables/test_data_product_writer.py @@ -0,0 +1,49 @@ +import unittest +import os + +from fprime_gds.executables import data_product_writer + +class TestRunDataProduct(unittest.TestCase): + + def test_data_product_parser(self): + args = data_product_writer.parse_args(["test.bin", "dictionary.json"]) + assert args.binFile == "test.bin" + assert args.jsonDict == "dictionary.json" + + def test_data_product_writer(self): + binFiles = ["makeBool.bin", + "makeDataArray.bin", + "makeF32.bin", + "makeFppArray.bin", + "makeI32.bin", + "makeI8.bin", + "makeU32Array.bin", + "makeComplex.bin", + "makeEnum.bin", + "makeF64.bin", + "makeI16.bin", + "makeI64.bin", + "makeU32.bin", + "makeU8Array.bin"] + + # Specify the directory where the .bin files are located + cwd_directory = os.getcwd() + test_directory = os.path.dirname(os.path.abspath(__file__)) + + # Loop through each file in the specified directory + for filename in binFiles: + print(f'Processing {filename}') + bin_file = os.path.join(test_directory, "dp_writer_data", filename) + dict_file = os.path.join(test_directory, "dp_writer_data", "dictionary.json") + args = data_product_writer.parse_args([bin_file, dict_file]) + data_product_writer.DataProductWriter(args.jsonDict, args.binFile).process() + #data_product_writer.process(args) + + # Check if the json file was created + jsonFile = filename.replace('.bin', '.json') + jsonFilePath = os.path.join(cwd_directory, jsonFile) + self.assertTrue(os.path.exists(jsonFilePath)) + + # If the json file exists, delete it + if os.path.exists(jsonFilePath): + os.remove(jsonFile) \ No newline at end of file