1syntax = "proto2"; 2 3package rootcanal.configuration; 4option optimize_for = CODE_SIZE; 5 6enum ControllerPreset { 7 // Version 5.3, all features enabled, all quirks disabled. 8 DEFAULT = 0; 9} 10 11message ControllerFeatures { 12 optional bool le_extended_advertising = 1; 13 optional bool le_periodic_advertising = 2; 14 optional bool ll_privacy = 3; 15 optional bool le_2m_phy = 4; 16 optional bool le_coded_phy = 5; 17} 18 19message ControllerQuirks { 20 // Randomly send ACL payloads before the Connection Complete event 21 // is sent to the Host stack. 22 optional bool send_acl_data_before_connection_complete = 1; 23 // Configure a default value for the LE random address. 24 optional bool has_default_random_address = 2; 25 // Send the Role Change event before the Connection Complete event 26 // in the case where a role switch is initiated at connection establishment. 27 optional bool send_role_change_before_connection_complete = 3; 28 // Send an Hardware Error event if any command is called before HCI Reset. 29 optional bool hardware_error_before_reset = 4; 30} 31 32message Controller { 33 // Configure the controller preset. Presets come with a pre-selection 34 // of features and quirks, but these can be overridden with the next fields. 35 optional ControllerPreset preset = 1; 36 // Configure support for controller features. 37 optional ControllerFeatures features = 2; 38 // Enable controller quirks. 39 // Quirks are behaviors observed in real controllers that are not valid 40 // according to the specification. 41 optional ControllerQuirks quirks = 3; 42} 43 44message TcpServer { 45 // Configure the TCP port on which the controller with this defined 46 // configuration will be served. 47 required int32 tcp_port = 1; 48 // Controller configuration for this port. 49 optional Controller configuration = 2; 50} 51 52message Configuration { 53 repeated TcpServer tcp_server = 1; 54} 55