RFE API

The RFE component defines the functionality of a RF emitter device, and it is specified in src/protobuf/mdif/rfe/rfe.proto.

Protobuf specification

The following documentation is generated from the Protobuf specification in src/protobuf/mdif/rfe/rfe.proto.

Table of Contents

mdif/common.proto

Common to all mdif protobuffers.

Status

Defines the status of a request

Name

Number

Description

SUCCESS

0

The request was successful

FAILURE

1

The request failed

ERR_INVALID

2

The request was invalid

ERR_NOT_SUPPORTED

3

The request is not supported

ERR_NOT_IMPLEMENTED

4

The request is not implemented

ERR_NOT_READY

5

The device is not ready to process the request

ERR_SIZE

6

The device cannot process the size

mdif/rfe/rfe.proto

Message allocation for the RFE component are in the range:

Start

End

Radix

0xC0

0xDF

Hex

192

223

Dec

RfeService

Defines the relationship between requests and responses in the RFE component

Method Name

Request Type

Response Type

Description

Start

StartReq

StartRes

Use to start the RF effector

Stop

StopReq

StopRes

Use to stop the RF effector

GetStateInfo

GetStateInfoReq

StateInfo

Use to get the current state of the RF effector

GetStateInfoReq

Request RFE state

RfeMsg

Rfe wire format messages

This message dictates the final format on the wire for rfe messages. It is a oneof construct to wrap a single message at a time.

Every request (req) has a corresponding response (res). The req/res pairs are defined in the RfeService through RPC patterns.

Indications (ind) are pushed without a request at any time

Field

Type

Description

start_req

StartReq

Request RFE start

start_res

StartRes

RFE start response

stop_req

StopReq

Request RFE stop

stop_res

StopRes

RFE stop response

get_state_info_req

GetStateInfoReq

Request RFE state

get_state_info_res

StateInfo

RFE state response

state_info_ind

StateInfo

RFE state indication

RfeState

Defines the state of the RFE device

Field

Type

Description

controller_type

ControllerType

config

Config

battery_status

BatteryStatus

temperature_status

TemperatureStatus

StartReq

Request RFE start.

Field

Type

Description

clear_list

bool

If clear_list is set to true, any currently active frequency bands will be cleared. If it is set to false, the frequency bands in the freq_band_list will be added to the active frequency bands.

freq_band_list

FreqBand

List of frequency bands to start trasmitting on

StartRes

Response to StartReq

Field

Type

Description

status

mdif.common.Status

Status of the request If only a single device is connected, then the status reflects the actual status of the device. If multiple devices are connected (daisy chained), then the status indicates if the request was accepted and relayed to the next device in the chain.

tx_status_list

TxStatus

List of statuses for each requested frequency band. The list is always relative to the first device in the chain.

StateInfo

Response to GetStateInfoReq and indication of RFE state

Field

Type

Description

local

RfeState

State of the first device in the chain.

remote

RfeState

State of the last device in the chain.

StopReq

Request RFE stop.

StopRes

Response to StopReq

Field

Type

Description

status

mdif.common.Status

Status of the request

BatteryStatus

Defines the status of the battery

Name

Number

Description

BATTERY_STATUS_UNDEFINED

0

BATTERY_STATUS_NORMAL

1

Battery status is normal

BATTERY_STATUS_LOW

2

Battery status is low, still operating as normal

Config

Defines the configuration of the RFE device The configuration is a bit field, and each bit must be explicitly tested

Name

Number

Description

CONFIG_UNDEFINED

0

CONFIG_SHUTDOWN

1

Device is hutting down

CONFIG_TRANSMITTING

2

Device is transmitting

CONFIG_AUTOMATIC

4

Device is in automatic mode. That is, the device is controlled by an external entity

CONFIG_TX_GNSS

8

Device is configured to transmit on GNSS band

CONFIG_TX_2G4

16

Device is configured to transmit on 2.4 GHz band

CONFIG_TX_5G2

32

Device is configured to transmit on 5.2 GHz band

CONFIG_TX_5G8

64

Device is configured to transmit on 5.8 GHz band

CONFIG_LOW_POWER

128

Device is in low power mode

ControllerType

Defines the type of controller If device is in automatic mode a controller must operate the device

Name

Number

Description

CONTROLLER_TYPE_UNDEFINED

0

CONTROLLER_TYPE_NOT_PRESENT

1

CONTROLLER_TYPE_WINGMAN

2

CONTROLLER_TYPE_OTHER

3

FreqBand

Defines the frequency bands that can be used for RFE

Name

Number

Description

FREQ_BAND_GNSS

0

GPS (L1, 1.5GHz) + GLONASS (L1, 1.6GHz)

FREQ_BAND_2_4_GHZ

1

2.4 GHz band

FREQ_BAND_5_2_GHZ

2

5.2 GHz band

FREQ_BAND_5_8_GHZ

3

5.8 GHz band

TemperatureStatus

Defines the temperature status

Name

Number

Description

TEMPERATURE_STATUS_UNDEFINED

0

TEMPERATURE_STATUS_NORMAL

1

Temperature status is normal

TEMPERATURE_STATUS_HIGH

2

Temperature status is high, output power is reduced

TEMPERATURE_STATUS_TO_HIGH

3

Temperature status is too high, transmission is stopped

TxStatus

Defines the status on the the requested frequency band

Name

Number

Description

TX_STATUS_UNDEFINED

0

TX_STATUS_ACCEPT

1

Frequency band accepted

TX_STATUS_FREQ_NOT_POSSIBLE

2

The requested frequency band can not be jammed due to hardware limitations

TX_STATUS_FREQ_NOT_ALLOWED

3

The requested frequency band is not allowed.

TX_STATUS_PARTIAL

4

Only part of the requested frequency band will be jammed due to resource limitations

TX_STATUS_RESOURCE_LIMITATION

5

The requested frequency band can not be jammed due to resource limitations

TX_STATUS_OVERHEAT

6

No jamming due to temperature

TX_STATUS_BATTERY_LOW

7

No jamming due to battery status

TX_STATUS_MANUAL_MODE

8

No jamming due to manual mode

TX_STATUS_UNAVAILABLE

9

Currently unavailable - shutting down, FWU etc.

Scalar Value Types

.proto Type

Notes

C++

Java

Python

Go

C#

PHP

Ruby

double

double

double

float

float64

double

float

Float

float

float

float

float

float32

float

float

Float

int32

Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.

int32

int

int

int32

int

integer

Bignum or Fixnum (as required)

int64

Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.

int64

long

int/long

int64

long

integer/string

Bignum

uint32

Uses variable-length encoding.

uint32

int

int/long

uint32

uint

integer

Bignum or Fixnum (as required)

uint64

Uses variable-length encoding.

uint64

long

int/long

uint64

ulong

integer/string

Bignum or Fixnum (as required)

sint32

Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.

int32

int

int

int32

int

integer

Bignum or Fixnum (as required)

sint64

Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.

int64

long

int/long

int64

long

integer/string

Bignum

fixed32

Always four bytes. More efficient than uint32 if values are often greater than 2^28.

uint32

int

int

uint32

uint

integer

Bignum or Fixnum (as required)

fixed64

Always eight bytes. More efficient than uint64 if values are often greater than 2^56.

uint64

long

int/long

uint64

ulong

integer/string

Bignum

sfixed32

Always four bytes.

int32

int

int

int32

int

integer

Bignum or Fixnum (as required)

sfixed64

Always eight bytes.

int64

long

int/long

int64

long

integer/string

Bignum

bool

bool

boolean

boolean

bool

bool

boolean

TrueClass/FalseClass

string

A string must always contain UTF-8 encoded or 7-bit ASCII text.

string

String

str/unicode

string

string

string

String (UTF-8)

bytes

May contain any arbitrary sequence of bytes.

string

ByteString

str

[]byte

ByteString

string

String (ASCII-8BIT)