上网设置
## 上网设置
上网设置模块需导入头文件`#import <H3CMagicKit/H3CGatewayObject+NetModeConfig.h>`
### 一、 确定当前上网方式
#### 1.1 获取中继状态
先调用是否是中继状态接口,确定当前是否是中继状态(下面接口返回中继状态,可能是有线中继或者无线中继)
```
[H3CGatewayObject getNetworkSettingTrunKSatateInfoWithSuccess:^(BOOL isRepeating) {
if (isRepeating) {
// 为中继模式,进一步确定为有线中继还是无线中继
[self requestRepeatingData];
}else {
// 非中继模式
[self requestDataNotRepeating];
}
} failure:^(H3CError *error) {
[MHToast showToastHUD:error.errorDesc];
[MHToast hiddenProgressHUD];
}];
}
```
#### 1.2 判断是有线还是无线中继
若是接口`1.1`返回中继状态,则调用有线中继接口
通过以下接口判断是否为有线中继
```
[H3CGatewayObject getNetworkSettingCableTrunkingInfoWithSuccess:^(H3CCableTrunkModel * _Nonnull model) {
// 非有线中继,则走无线中继
int wirebridge = [model.repeaterStatus intValue];
if (wirebridge ==1 || wirebridge==4) {
// 无线中继
// 调用无线中继接口,继续获取无线中继相关信息
}
else {
// 有线中继
}
} failure:^(H3CError *error) {
[MHToast showToastHUD:error.errorDesc];
[MHToast hiddenProgressHUDWithTitle];
}];
```
否则为无线中继,获取无线中继信息。
```
[H3CGatewayObject getNetworkSettingWirelessTrunkingInfoWithSuccess:^(H3CWirelessTrunkModel * _Nonnull model) {
} failure:^(H3CError *error) {
[MHToast hiddenProgressHUD];
[MHToast showToastHUD:error.errorDesc];
}];
```
#### 1.3 获取DHCP、PPPoE、Static IP信息
若不是中继状态(即DHCP、PPPoE、Static IP),则调用网络设置常规信息获取接口
```
[H3CGatewayObject getNetworkSettingNormalInfoWithSuccess:^(H3CNetModeNormalModel * _Nonnull model) {
[MHToast hiddenProgressHUDWithTitle];
int netPlayMode = [model.netPlayMode intValue];
if (netPlayMode == 1) { // DHCP
} else if (netPlayMode == 2) { // PPPoE
} else if (netPlayMode == 3) { // Static IP)
}
} failure:^(H3CError *error) {
}];
````
### 二、 配置上网方式(非配置向导配置)
若网关当前为为中继状态,则需要先断开中继,才能配置其他上网方式。
#### 2.1 断开中继
* 断开有线中继
```
[H3CGatewayObject disconnectNetworkSettingCableTrunkingWithSuccess:^(id obj) {
[MHToast hiddenProgressHUD];
} failure:^(H3CError *error) {
if (error.retCode == -1) { // 网络异常也算成功
}else {
}
}];
```
* 断开无线中继
```
[H3CGatewayObject disconnectNetworkSettingWirelessTrunkingWithSuccess:^(id obj) {
} failure:^(H3CError *error) {
if (error.retCode == -1 || error.retCode == 999) { // 网络异常也算成功 999:请求数据超时
}else {
[MHToast showToastHUD:error.errorDesc];
}
}];
```
#### 2.2 配置DHCP
```
[H3CGatewayObject setNetworkSettingDHCPInfoWithSuccess:^(id obj) {
[MHToast showToastHUD:@"上网模式已设置为DHCP模式" ];
} failure:^(H3CError *error) {
}];
```
#### 2.3 配置PPPoE
```
H3CNetModePppoeAttrs *attr = [[H3CNetModePppoeAttrs alloc] init];
attr.broadBandId = self.broadBandId;
attr.broadBandPsd = self.broadBandPsd;
[MHToast showProgressHUDWithTitle:@"正在下发设备配置信息..."];
[H3CGatewayObject setNetworkSettingPPPOEInfoWithAttrs:attr success:^(id obj) {
[MHToast hiddenProgressHUD];
[MHToast showToastHUD:@"配置成功" ];
[self.navigationController popViewControllerAnimated:YES];
} failure:^(H3CError *error) {
[MHToast hiddenProgressHUD];
[MHToast showToastHUD:error.errorDesc];
}];
```
#### 2.4 静态IP
```
H3CNetModeStaticAttrs *attr = [[H3CNetModeStaticAttrs alloc] init];
attr.ipAdress = self.ipAdress;
attr.mask = self.mask;
attr.gateway = self.gateway;
attr.dns1 = self.dns1;
attr.dns2 = self.dns2;
[H3CGatewayObject setNetworkSettingStaticIpInfoWithAttrs:attr success:^(id obj) {
[MHToast showToastHUD:@"上网模式已设置为静态IP模式"];
} failure:^(H3CError *error) {
}];
```
#### 2.5 配置有线中继
```
[H3CGatewayObject setNetworkSettingCableTrunkingInfoWithSuccess:^(id obj) {
[MHToast hiddenProgressHUD];
} failure:^(H3CError *error) {
if (error.retCode == -1) { // 网络异常也算成功
}else {
}
}];
```
#### 2.6 配置无线中继
```
H3CWirelessTrunkAttrs *attr = [[H3CWirelessTrunkAttrs alloc] init];
attr.wifiName = _wifiName;
attr.encryptMode = @(_encryptModel);
attr.wifiSignal = @(3);
attr.wifiPwd = psw;
[H3CGatewayObject setNetworkSettingWirelessTrunkingInfoWithAttrs:attr success:^(id obj) {
} failure:^(H3CError *error) {
}];
```
#### 三、 能力集
| 能力集序号|能力集属性|描述|
|-|-|-|
|8| isSupportInternetPPPoE | 是否支持上网设置PPPoE|
|9| isSupportInternetDHCP | 是否支持上网设置DHCP|
|10| isSupportInternetStatic | 是否支持上网设置Static|
|11| isSupportInternetWirelessRepeater | 是否支持上网设置无线中继|
|12| isSupportInternetWireRepeater | 是否支持上网设置有线中继|