syntax = "proto3";
package RemoteApiRs232;
option java_package = "com.thp.remoteapi_rs232";
option java_outer_classname = "ApiMessageProtos";
message ApiMessage {
uint32 protocol_version = 1; // currently always with value 1
uint32 sequence_id = 2; // wrap around to 0 at 255; i.e. it is treated as uint8
// The api_messages are separated into 4 categories with a certain value range
// 0x1000 - 0x1FFF: Request messages
// 0x4000 - 0x4FFF: Response messages where response 0x4nnn belongs to request 0x1nnn
// 0x8000 - 0x8FFF: Event messages
// 0xc000 - 0xcFFF: Response messages not relatable to a specific request message
oneof api_message {
StartProduct start_product = 0x1001;
GetProductList get_product_list = 0x1002;
CancelProduct cancel_product = 0x1003 [deprecated = true];
GetAvailableProductIds get_available_product_ids = 0x1004;
GetActiveEvents get_active_events = 0x1005;
ForceRinse force_rinse = 0x1006;
PostponeRinse postpone_rinse = 0x1007;
StartProductCategoryByName start_product_category_by_name = 0x1008;
GetSwVersion get_sw_version = 0x1009;
GetNSFCompliantCleaning get_nsf_compliant_cleaning = 0x100a [deprecated = true];
GetRunningOrders get_running_orders = 0x100b;
GetQueuedOrders get_queued_orders = 0x100c;
GetOrder get_order = 0x100d;
Confirm confirm = 0x100e;
Cancel cancel = 0x100f;
StartCleaning start_cleaning = 0x1010;
GetSetting get_setting = 0x1011;
ProductStarted product_started = 0x4001;
ProductList product_list = 0x4002;
ProductCancelled product_cancelled = 0x4003 [deprecated = true];
AvailableProductIds available_product_ids = 0x4004;
ActiveEvents active_events = 0x4005;
RinseForced rinse_forced = 0x4006;
RinsePostponed rinse_postponed = 0x4007;
ProductCategoryByNameStarted product_category_by_name_started = 0x4008;
SwVersion sw_version = 0x4009;
NSFCompliantCleaning nsf_compliant = 0x400a [deprecated = true];
RunningOrders running_orders = 0x400b;
QueuedOrders queued_orders = 0x400c;
OrderResponse order_response = 0x400d;
Confirmed confirmed = 0x400e;
Cancelled cancelled = 0x400f;
CleaningStarted cleaning_started = 0x4010;
SettingResponse setting_response = 0x4011;
ErrorEvent error_event = 0x8000;
ProductFinished product_finished = 0x8001 [deprecated = true];
ProductAvailabilityChanged product_availability_changed = 0x8002;
RinsingUpcoming rinsing_upcoming = 0x8003;
RinseStarted rinse_started = 0x8004;
AutomaticCleaningRunning auto_clean_is_running = 0x8005 [deprecated = true];
ProgressUpdated progress_updated = 0x8006 [deprecated = true];
Order order_changed = 0x8007;
OrdersRemoved orders_removed = 0x8008;
Setting setting_changed = 0x8009;
UnknownMessage unknown_message = 0xc000;
WrongCrc wrong_crc = 0xc001;
BrokenMessage broken_message = 0xc002;
}
// The API message is followed by two bytes in big endian byte order that contain a CRC16 for this message.
// The CRC polynomial is 0xC86C and an initial value of 0xffff is used.
// This CRC is not considered to be part of the ApiMessage and has to be removed prior to
// parsing the message with protobuf
}
enum ResponseCode {
UNKNOWN_RESPONSE_CODE = 0;
SUCCESS = 1;
INVALID_PARAMETER = 2;
DBUS_ADAPTER_ERROR = 3;
GENERAL_ERROR = 4;
SYSTEM_BUSY = 100;
UNKNOWN_PRODUCT_ID = 101;
PRODUCT_NOT_AVAILABLE = 102;
PRODUCT_ID_NOT_POURING = 103;
MAX_POSTPONE_NUM_REACHED = 104;
NO_RINSING_UPCOMING = 105;
SETTING_ID_NOT_AVAILABLE = 106;
}
message StartProduct {
string product_id = 1;
double start_delay_s = 2 [deprecated = true];
}
message CancelProduct {
string product_id = 1;
double cancel_delay_s = 2 [deprecated = true];
}
message StartProductCategoryByName {
string product_name = 1;
double start_delay_s = 2 [deprecated = true];
}
message GetProductList { }
message GetAvailableProductIds { }
message GetActiveEvents { }
message ForceRinse { }
message PostponeRinse {
uint32 milliseconds = 1;
}
message GetSwVersion { }
message GetNSFCompliantCleaning {
}
message GetRunningOrders {
}
message GetQueuedOrders {
}
message GetOrder {
string order_id = 1;
}
message Confirm {
string order_id = 1;
}
message Cancel {
string order_id = 1;
}
message StartCleaning {
}
message GetSetting {
uint32 setting_id = 1;
}
message ProductStarted {
ResponseCode response_code = 1;
string order_id = 2;
}
message ProductCategoryByNameStarted {
ResponseCode response_code = 1;
string order_id = 2;
}
message ProductCancelled {
ResponseCode response_code = 1;
}
message ProductList {
ResponseCode response_code = 1;
map<string, string> product_list = 2;
}
message AvailableProductIds {
ResponseCode response_code = 1;
repeated string available_product_ids = 2;
}
message ActiveEvents {
ResponseCode response_code = 1;
repeated ErrorEvent active_events = 2;
}
message RinseForced {
ResponseCode response_code = 1;
}
message RinsePostponed {
ResponseCode response_code = 1;
}
message SwVersion {
ResponseCode response_code = 1;
string sw_version = 2;
}
message NSFCompliantCleaning {
ResponseCode response_code = 1;
bool nsf_compliant = 2;
}
message RunningOrders {
ResponseCode response_code = 1;
repeated Order orders = 2;
}
message QueuedOrders {
ResponseCode response_code = 1;
repeated Order orders = 2;
}
message OrderResponse {
ResponseCode response_code = 1;
Order order = 2;
}
message Confirmed {
ResponseCode response_code = 1;
}
message Cancelled {
ResponseCode response_code = 1;
}
message CleaningStarted {
ResponseCode response_code = 1;
string order_id = 2;
}
message SettingResponse {
ResponseCode response_code = 1;
Setting setting = 2;
}
message ErrorEvent {
uint32 error_number = 1;
string title = 2;
uint32 source_index = 3;
}
message ProductFinished {
string product_id = 1;
bool success = 2;
optional ProductResultDetails product_result_details = 3;
}
message ProductResultDetails {
repeated CoffeeResult coffee_result = 1;
}
message CoffeeResult {
double extraction_time_s = 1;
double puck_thickness_after_squeeze_mm = 2;
}
message ProductAvailabilityChanged {
repeated string product_ids = 1;
}
message RinsingUpcoming {
uint32 start_in_ms = 1;
}
message RinseStarted {
}
message AutomaticCleaningRunning {
bool is_running = 1;
}
message ProgressUpdated {
uint32 current_step = 1;
uint32 total_number_of_steps = 2;
}
message Order {
string order_id = 1;
string product_id = 2;
string status = 3;
bool is_finished = 4;
bool is_cancel_allowed = 5;
bool is_confirm_allowed = 6;
bool is_cancelled = 7;
bool is_confirmed = 8;
OrderAction action = 9;
repeated AdditionalInformation additional_information = 10;
}
message OrderAction {
string context = 1;
string action = 2;
}
message AdditionalInformation {
string key = 1;
oneof interaction {
double value_double = 2;
string value_string = 3;
}
}
message OrdersRemoved {
repeated string order_ids = 1;
}
message Setting {
uint32 setting_id = 1;
string value = 2;
}
message UnknownMessage { }
message WrongCrc { }
message BrokenMessage { }