mirror of
				https://github.com/Telecominfraproject/wlan-cloud-ucentralgw.git
				synced 2025-11-04 04:37:46 +00:00 
			
		
		
		
	Compare commits
	
		
			17 Commits
		
	
	
		
			kv3.0.11
			...
			openapi-fi
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					38bc0f0d69 | ||
| 
						 | 
					e7362c2020 | ||
| 
						 | 
					9c9987e190 | ||
| 
						 | 
					4ac7b6ba0b | ||
| 
						 | 
					f9ee19af91 | ||
| 
						 | 
					cd2ab8660f | ||
| 
						 | 
					b9f00f6603 | ||
| 
						 | 
					596cfd49e1 | ||
| 
						 | 
					b3deba5606 | ||
| 
						 | 
					a97d49a06b | ||
| 
						 | 
					b1be0604d6 | ||
| 
						 | 
					b29f7f7dc4 | ||
| 
						 | 
					132b31b06b | ||
| 
						 | 
					3114ff8a32 | ||
| 
						 | 
					9c5aeda5dd | ||
| 
						 | 
					783ec99930 | ||
| 
						 | 
					0c661b8b93 | 
@@ -1,7 +1,7 @@
 | 
				
			|||||||
ARG DEBIAN_VERSION=11.5-slim
 | 
					ARG DEBIAN_VERSION=11.5-slim
 | 
				
			||||||
ARG POCO_VERSION=poco-tip-v2
 | 
					ARG POCO_VERSION=poco-tip-v2
 | 
				
			||||||
ARG CPPKAFKA_VERSION=tip-v1
 | 
					ARG CPPKAFKA_VERSION=tip-v1
 | 
				
			||||||
ARG VALIJASON_VERSION=tip-v1
 | 
					ARG VALIJASON_VERSION=tip-v1.0.2
 | 
				
			||||||
ARG APP_NAME=owgw
 | 
					ARG APP_NAME=owgw
 | 
				
			||||||
ARG APP_HOME_DIR=/openwifi
 | 
					ARG APP_HOME_DIR=/openwifi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										32
									
								
								PROTOCOL.md
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								PROTOCOL.md
									
									
									
									
									
								
							@@ -306,8 +306,40 @@ The device should answer:
 | 
				
			|||||||
         },
 | 
					         },
 | 
				
			||||||
     "id" : <same number>
 | 
					     "id" : <same number>
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Controller wants the device to apply a given fixed configuration
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Controller sends this command when it requires the device to apply fixed configuration, eg. country code. The device
 | 
				
			||||||
 | 
					should respond with message indicating failure or success.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```json
 | 
				
			||||||
 | 
					{   "jsonrpc" : "2.0",
 | 
				
			||||||
 | 
					    "method" : "fixedconfig",
 | 
				
			||||||
 | 
					    "params" : {
 | 
				
			||||||
 | 
					        "serial" : <serial number>,
 | 
				
			||||||
 | 
					        "when" : Optional - <UTC time when to apply this config, 0 means immediate, this is a suggestion>
 | 
				
			||||||
 | 
					        "country" : "<country-code>"
 | 
				
			||||||
 | 
					     },
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The device should answer:
 | 
				
			||||||
 | 
					```json
 | 
				
			||||||
 | 
					{   "jsonrpc" : "2.0",
 | 
				
			||||||
 | 
					    "result" : {
 | 
				
			||||||
 | 
					        "serial": <serial number>,
 | 
				
			||||||
 | 
					        "status": {
 | 
				
			||||||
 | 
					            "error": 0 or an error number,
 | 
				
			||||||
 | 
					            "text": <description of the error or success, eg. "Applied fixed config, rebooting">
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "uuid": <UUID>
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
##### The Answer
 | 
					##### The Answer
 | 
				
			||||||
The device can answer and tell the controller it has rejected certain parts of the config and potentially replaced them with
 | 
					The device can answer and tell the controller it has rejected certain parts of the config and potentially replaced them with
 | 
				
			||||||
appropriate values. This could be used to allow a device to replace frequencies for the regions it is located in. The device 
 | 
					appropriate values. This could be used to allow a device to replace frequencies for the regions it is located in. The device 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,7 @@ info:
 | 
				
			|||||||
    url: https://www.ucentral.info/support
 | 
					    url: https://www.ucentral.info/support
 | 
				
			||||||
 | 
					
 | 
				
			||||||
servers:
 | 
					servers:
 | 
				
			||||||
  - url: 'https://localhost:16001/api/v1'
 | 
					  - url: 'https://localhost:16002/api/v1'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
security:
 | 
					security:
 | 
				
			||||||
  - bearerAuth: []
 | 
					  - bearerAuth: []
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -167,7 +167,10 @@ namespace OpenWifi {
 | 
				
			|||||||
		{APCommands::Commands::certupdate, false, true, &RESTAPI_device_commandHandler::CertUpdate, 60000ms},
 | 
							{APCommands::Commands::certupdate, false, true, &RESTAPI_device_commandHandler::CertUpdate, 60000ms},
 | 
				
			||||||
		{APCommands::Commands::transfer, false, true, &RESTAPI_device_commandHandler::Transfer, 60000ms},
 | 
							{APCommands::Commands::transfer, false, true, &RESTAPI_device_commandHandler::Transfer, 60000ms},
 | 
				
			||||||
		{APCommands::Commands::script, false, true, &RESTAPI_device_commandHandler::Script, 60000ms},
 | 
							{APCommands::Commands::script, false, true, &RESTAPI_device_commandHandler::Script, 60000ms},
 | 
				
			||||||
		{APCommands::Commands::powercycle, false, true, &RESTAPI_device_commandHandler::PowerCycle, 60000ms}
 | 
							{APCommands::Commands::powercycle, false, true, &RESTAPI_device_commandHandler::PowerCycle, 60000ms},
 | 
				
			||||||
 | 
							{APCommands::Commands::fixedconfig, false, true, &RESTAPI_device_commandHandler::FixedConfig, 120000ms},
 | 
				
			||||||
 | 
							{APCommands::Commands::cablediagnostics, false, true, &RESTAPI_device_commandHandler::CableDiagnostics, 120000ms},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void RESTAPI_device_commandHandler::DoPost() {
 | 
						void RESTAPI_device_commandHandler::DoPost() {
 | 
				
			||||||
@@ -1548,4 +1551,82 @@ namespace OpenWifi {
 | 
				
			|||||||
										   Logger_);
 | 
															   Logger_);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// `fixedconfig` command is used set country propery on AP
 | 
				
			||||||
 | 
						// This handler uses `fixedconfig` command definitions
 | 
				
			||||||
 | 
						void RESTAPI_device_commandHandler::FixedConfig(
 | 
				
			||||||
 | 
							const std::string &CMD_UUID, uint64_t CMD_RPC, std::chrono::milliseconds timeout,
 | 
				
			||||||
 | 
							[[maybe_unused]] const GWObjects::DeviceRestrictions &Restrictions) {
 | 
				
			||||||
 | 
							poco_debug(Logger_, fmt::format("FIXEDCONFIG({},{}): TID={} user={} serial={}", CMD_UUID, CMD_RPC,
 | 
				
			||||||
 | 
															TransactionId_, Requester(), SerialNumber_));
 | 
				
			||||||
 | 
							// do not allow `fixedconfig` command for simulated devices
 | 
				
			||||||
 | 
							if(IsDeviceSimulated(SerialNumber_)) {
 | 
				
			||||||
 | 
								CallCanceled("FIXEDCONFIG", CMD_UUID, CMD_RPC, RESTAPI::Errors::SimulatedDeviceNotSupported);
 | 
				
			||||||
 | 
								return BadRequest(RESTAPI::Errors::SimulatedDeviceNotSupported);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// setup and validate fixedconfig object
 | 
				
			||||||
 | 
							GWObjects::FixedConfig fixed_config;
 | 
				
			||||||
 | 
							if(!fixed_config.from_json(ParsedBody_)) {
 | 
				
			||||||
 | 
								return BadRequest(RESTAPI::Errors::MissingOrInvalidParameters);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// setup command message
 | 
				
			||||||
 | 
							GWObjects::CommandDetails Cmd;
 | 
				
			||||||
 | 
							Cmd.SerialNumber = SerialNumber_;
 | 
				
			||||||
 | 
							Cmd.SubmittedBy = Requester();
 | 
				
			||||||
 | 
							Cmd.UUID = CMD_UUID;
 | 
				
			||||||
 | 
							Cmd.Command = uCentralProtocol::FIXEDCONFIG;
 | 
				
			||||||
 | 
							std::ostringstream os;
 | 
				
			||||||
 | 
							ParsedBody_->stringify(os);
 | 
				
			||||||
 | 
							Cmd.Details = os.str();
 | 
				
			||||||
 | 
							Cmd.RunAt = 0;
 | 
				
			||||||
 | 
							Cmd.ErrorCode = 0;
 | 
				
			||||||
 | 
							Cmd.WaitingForFile = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// send fixedconfig command to device and return status
 | 
				
			||||||
 | 
							return RESTAPI_RPC::WaitForCommand(CMD_RPC, APCommands::Commands::fixedconfig, false, Cmd,
 | 
				
			||||||
 | 
															   *ParsedBody_, *Request, *Response, timeout, nullptr, this,
 | 
				
			||||||
 | 
															   Logger_);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						void RESTAPI_device_commandHandler::CableDiagnostics(
 | 
				
			||||||
 | 
							const std::string &CMD_UUID, uint64_t CMD_RPC,
 | 
				
			||||||
 | 
							[[maybe_unused]] std::chrono::milliseconds timeout,
 | 
				
			||||||
 | 
							[[maybe_unused]] const GWObjects::DeviceRestrictions &Restrictions) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(UserInfo_.userinfo.userRole != SecurityObjects::ROOT &&
 | 
				
			||||||
 | 
								UserInfo_.userinfo.userRole != SecurityObjects::ADMIN) {
 | 
				
			||||||
 | 
								CallCanceled("CABLEDIAGNOSTICS", CMD_UUID, CMD_RPC, RESTAPI::Errors::ACCESS_DENIED);
 | 
				
			||||||
 | 
								return UnAuthorized(RESTAPI::Errors::ACCESS_DENIED);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							poco_debug(Logger_, fmt::format("CABLEDIAGNOSTICS({},{}): TID={} user={} serial={}", CMD_UUID,
 | 
				
			||||||
 | 
															CMD_RPC, TransactionId_, Requester(), SerialNumber_));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if(IsDeviceSimulated(SerialNumber_)) {
 | 
				
			||||||
 | 
								CallCanceled("CABLEDIAGNOSTICS", CMD_UUID, CMD_RPC, RESTAPI::Errors::SimulatedDeviceNotSupported);
 | 
				
			||||||
 | 
								return BadRequest(RESTAPI::Errors::SimulatedDeviceNotSupported);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							GWObjects::CableDiagnostics	PR;
 | 
				
			||||||
 | 
							if(!PR.from_json(ParsedBody_)) {
 | 
				
			||||||
 | 
								return BadRequest(RESTAPI::Errors::MissingOrInvalidParameters);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							GWObjects::CommandDetails Cmd;
 | 
				
			||||||
 | 
							Cmd.SerialNumber = SerialNumber_;
 | 
				
			||||||
 | 
							Cmd.SubmittedBy = Requester();
 | 
				
			||||||
 | 
							Cmd.UUID = CMD_UUID;
 | 
				
			||||||
 | 
							Cmd.Command = uCentralProtocol::CABLEDIAGNOSTICS;
 | 
				
			||||||
 | 
							std::ostringstream os;
 | 
				
			||||||
 | 
							ParsedBody_->stringify(os);
 | 
				
			||||||
 | 
							Cmd.Details = os.str();
 | 
				
			||||||
 | 
							Cmd.RunAt = PR.when;
 | 
				
			||||||
 | 
							Cmd.ErrorCode = 0;
 | 
				
			||||||
 | 
							Cmd.WaitingForFile = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return RESTAPI_RPC::WaitForCommand(CMD_RPC, APCommands::Commands::cablediagnostics, false, Cmd,
 | 
				
			||||||
 | 
															   *ParsedBody_, *Request, *Response, timeout, nullptr, this,
 | 
				
			||||||
 | 
															   Logger_);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
} // namespace OpenWifi
 | 
					} // namespace OpenWifi
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,6 +70,10 @@ namespace OpenWifi {
 | 
				
			|||||||
					const GWObjects::DeviceRestrictions &R);
 | 
										const GWObjects::DeviceRestrictions &R);
 | 
				
			||||||
		void PowerCycle(const std::string &UUID, uint64_t RPC, std::chrono::milliseconds timeout,
 | 
							void PowerCycle(const std::string &UUID, uint64_t RPC, std::chrono::milliseconds timeout,
 | 
				
			||||||
					  const GWObjects::DeviceRestrictions &R);
 | 
										  const GWObjects::DeviceRestrictions &R);
 | 
				
			||||||
 | 
							void FixedConfig(const std::string &UUID, uint64_t RPC, std::chrono::milliseconds timeout,
 | 
				
			||||||
 | 
										  const GWObjects::DeviceRestrictions &R);
 | 
				
			||||||
 | 
							void CableDiagnostics(const std::string &UUID, uint64_t RPC, std::chrono::milliseconds timeout,
 | 
				
			||||||
 | 
										  const GWObjects::DeviceRestrictions &R);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		static auto PathName() {
 | 
							static auto PathName() {
 | 
				
			||||||
			return std::list<std::string>{"/api/v1/device/{serialNumber}/{command}"};
 | 
								return std::list<std::string>{"/api/v1/device/{serialNumber}/{command}"};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -799,4 +799,24 @@ namespace OpenWifi::GWObjects {
 | 
				
			|||||||
		return false;
 | 
							return false;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool FixedConfig::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								field_from_json(Obj, "serial", serialNumber);
 | 
				
			||||||
 | 
								field_from_json(Obj, "country", country);
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (const Poco::Exception &E) {
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						bool CableDiagnostics::from_json(const Poco::JSON::Object::Ptr &Obj) {
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								field_from_json(Obj, "serial", serialNumber);
 | 
				
			||||||
 | 
								field_from_json(Obj, "when", when);
 | 
				
			||||||
 | 
								field_from_json(Obj, "ports", ports);
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							} catch (const Poco::Exception &E) {
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
} // namespace OpenWifi::GWObjects
 | 
					} // namespace OpenWifi::GWObjects
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -532,6 +532,19 @@ namespace OpenWifi::GWObjects {
 | 
				
			|||||||
		std::uint64_t 	when;
 | 
							std::uint64_t 	when;
 | 
				
			||||||
		std::vector<PowerCyclePort> ports;
 | 
							std::vector<PowerCyclePort> ports;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						struct FixedConfig {
 | 
				
			||||||
 | 
							std::string 	serialNumber;
 | 
				
			||||||
 | 
							std::string 	country;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
						struct CableDiagnostics {
 | 
				
			||||||
 | 
							std::string 	serialNumber;
 | 
				
			||||||
 | 
							std::uint64_t 	when;
 | 
				
			||||||
 | 
							std::vector<std::string> ports;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | 
							bool from_json(const Poco::JSON::Object::Ptr &Obj);
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
} // namespace OpenWifi::GWObjects
 | 
					} // namespace OpenWifi::GWObjects
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2411,11 +2411,18 @@ static std::string DefaultAPSchema = R"foo(
 | 
				
			|||||||
                    "$ref": "#/$defs/interface.ssid.encryption"
 | 
					                    "$ref": "#/$defs/interface.ssid.encryption"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "multi-psk": {
 | 
					                "multi-psk": {
 | 
				
			||||||
                    "type": "array",
 | 
					                    "anyOf": [
 | 
				
			||||||
                    "items": {
 | 
					                        {
 | 
				
			||||||
                        "$ref": "#/$defs/interface.ssid.multi-psk"
 | 
					                            "type": "array",
 | 
				
			||||||
                    }
 | 
					                            "items": {
 | 
				
			||||||
                },
 | 
					                                "$ref": "#/$defs/interface.ssid.multi-psk"
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "type": "boolean"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
                "rrm": {
 | 
					                "rrm": {
 | 
				
			||||||
                    "$ref": "#/$defs/interface.ssid.rrm"
 | 
					                    "$ref": "#/$defs/interface.ssid.rrm"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
@@ -6603,10 +6610,17 @@ static std::string DefaultSWITCHSchema = R"foo(
 | 
				
			|||||||
                    "$ref": "#/$defs/interface.ssid.encryption"
 | 
					                    "$ref": "#/$defs/interface.ssid.encryption"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "multi-psk": {
 | 
					                "multi-psk": {
 | 
				
			||||||
                    "type": "array",
 | 
					                    "anyOf": [
 | 
				
			||||||
                    "items": {
 | 
					                        {
 | 
				
			||||||
                        "$ref": "#/$defs/interface.ssid.multi-psk"
 | 
					                            "type": "array",
 | 
				
			||||||
                    }
 | 
					                            "items": {
 | 
				
			||||||
 | 
					                                "$ref": "#/$defs/interface.ssid.multi-psk"
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        },
 | 
				
			||||||
 | 
					                        {
 | 
				
			||||||
 | 
					                            "type": "boolean"
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "rrm": {
 | 
					                "rrm": {
 | 
				
			||||||
                    "$ref": "#/$defs/interface.ssid.rrm"
 | 
					                    "$ref": "#/$defs/interface.ssid.rrm"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -118,6 +118,10 @@ namespace OpenWifi {
 | 
				
			|||||||
						Producer.poll((std::chrono::milliseconds) 0);
 | 
											Producer.poll((std::chrono::milliseconds) 0);
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
									if (Queue_.size() == 0) {
 | 
				
			||||||
 | 
										// message queue is empty, flush all previously sent messages
 | 
				
			||||||
 | 
										Producer.flush();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			} catch (const cppkafka::HandleException &E) {
 | 
								} catch (const cppkafka::HandleException &E) {
 | 
				
			||||||
				poco_warning(Logger_,
 | 
									poco_warning(Logger_,
 | 
				
			||||||
							 fmt::format("Caught a Kafka exception (producer): {}", E.what()));
 | 
												 fmt::format("Caught a Kafka exception (producer): {}", E.what()));
 | 
				
			||||||
@@ -126,10 +130,6 @@ namespace OpenWifi {
 | 
				
			|||||||
			} catch (...) {
 | 
								} catch (...) {
 | 
				
			||||||
				poco_error(Logger_, "std::exception");
 | 
									poco_error(Logger_, "std::exception");
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if (Queue_.size() == 0) {
 | 
					 | 
				
			||||||
				// message queue is empty, flush all previously sent messages
 | 
					 | 
				
			||||||
				Producer.flush();
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			Note = Queue_.waitDequeueNotification();
 | 
								Note = Queue_.waitDequeueNotification();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		Producer.flush();
 | 
							Producer.flush();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -580,6 +580,9 @@ namespace OpenWifi::RESTAPI::Protocol {
 | 
				
			|||||||
	static const char *INTERVAL = "interval";
 | 
						static const char *INTERVAL = "interval";
 | 
				
			||||||
	static const char *UI = "UI";
 | 
						static const char *UI = "UI";
 | 
				
			||||||
	static const char *BANDWIDTH = "bandwidth";
 | 
						static const char *BANDWIDTH = "bandwidth";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						static const char *FIXEDCONFIG = "fixedconfig";
 | 
				
			||||||
 | 
						static const char *CABLEDIAGNOSTICS = "cable-diagnostics";
 | 
				
			||||||
} // namespace OpenWifi::RESTAPI::Protocol
 | 
					} // namespace OpenWifi::RESTAPI::Protocol
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace OpenWifi::uCentralProtocol {
 | 
					namespace OpenWifi::uCentralProtocol {
 | 
				
			||||||
@@ -692,6 +695,9 @@ namespace OpenWifi::uCentralProtocol {
 | 
				
			|||||||
	static const char *RRM = "rrm";
 | 
						static const char *RRM = "rrm";
 | 
				
			||||||
	static const char *ACTIONS = "actions";
 | 
						static const char *ACTIONS = "actions";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						static const char *FIXEDCONFIG = "fixedconfig";
 | 
				
			||||||
 | 
						static const char *CABLEDIAGNOSTICS = "cable-diagnostics";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace OpenWifi::uCentralProtocol
 | 
					} // namespace OpenWifi::uCentralProtocol
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace OpenWifi::uCentralProtocol::Events {
 | 
					namespace OpenWifi::uCentralProtocol::Events {
 | 
				
			||||||
@@ -788,6 +794,8 @@ namespace OpenWifi::APCommands {
 | 
				
			|||||||
		certupdate,
 | 
							certupdate,
 | 
				
			||||||
		transfer,
 | 
							transfer,
 | 
				
			||||||
		powercycle,
 | 
							powercycle,
 | 
				
			||||||
 | 
							fixedconfig,
 | 
				
			||||||
 | 
							cablediagnostics,
 | 
				
			||||||
		unknown
 | 
							unknown
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -802,7 +810,8 @@ namespace OpenWifi::APCommands {
 | 
				
			|||||||
		RESTAPI::Protocol::EVENTQUEUE,	 RESTAPI::Protocol::TELEMETRY,
 | 
							RESTAPI::Protocol::EVENTQUEUE,	 RESTAPI::Protocol::TELEMETRY,
 | 
				
			||||||
		RESTAPI::Protocol::PING,		 RESTAPI::Protocol::SCRIPT,
 | 
							RESTAPI::Protocol::PING,		 RESTAPI::Protocol::SCRIPT,
 | 
				
			||||||
		RESTAPI::Protocol::RRM,		 	 RESTAPI::Protocol::CERTUPDATE,
 | 
							RESTAPI::Protocol::RRM,		 	 RESTAPI::Protocol::CERTUPDATE,
 | 
				
			||||||
		RESTAPI::Protocol::TRANSFER,	 RESTAPI::Protocol::POWERCYCLE
 | 
							RESTAPI::Protocol::TRANSFER,	 RESTAPI::Protocol::POWERCYCLE,
 | 
				
			||||||
 | 
							RESTAPI::Protocol::FIXEDCONFIG,  RESTAPI::Protocol::CABLEDIAGNOSTICS
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	inline const char *to_string(Commands Cmd) { return uCentralAPCommands[(uint8_t)Cmd]; }
 | 
						inline const char *to_string(Commands Cmd) { return uCentralAPCommands[(uint8_t)Cmd]; }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user