setNetworkInterfaces method
Sets a static IPv4 address on the given interface. Returns true if the camera requires a reboot to apply changes.
Implementation
Future<bool> setNetworkInterfaces(
String interfaceToken, {
required String ip,
required int prefixLength,
}) async {
OnvifLogger.instance.log(
'SetNetworkInterfaces token=$interfaceToken ip=$ip/$prefixLength',
name: _tag,
);
final String body =
'<tds:SetNetworkInterfaces>'
'<tds:InterfaceToken>$interfaceToken</tds:InterfaceToken>'
'<tds:NetworkInterface>'
'<tt:IPv4>'
'<tt:Enabled>true</tt:Enabled>'
'<tt:Manual>'
'<tt:Address>$ip</tt:Address>'
'<tt:PrefixLength>$prefixLength</tt:PrefixLength>'
'</tt:Manual>'
'<tt:DHCP>false</tt:DHCP>'
'</tt:IPv4>'
'</tds:NetworkInterface>'
'</tds:SetNetworkInterfaces>';
final response = await client.soapRequest(
body,
action: 'http://www.onvif.org/ver10/device/wsdl/SetNetworkInterfaces',
);
final document = XmlDocument.parse(response);
const tdsNs = 'http://www.onvif.org/ver10/device/wsdl';
final rebootNeeded = document
.findAllElements('RebootNeeded', namespace: tdsNs)
.firstOrNull
?.innerText
.trim()
.toLowerCase() ==
'true';
OnvifLogger.instance.log(
'SetNetworkInterfaces OK ip=$ip/$prefixLength rebootNeeded=$rebootNeeded',
name: _tag,
);
return rebootNeeded;
}