3872 views
# Tapo C200 Root password: `$1$U4SF7BzK$7efuCoMxdZ2czN5DhU/av1`, seems strong, I tried a bunch of wordlists but nothing. EDIT: cracked, https://github.com/nervous-inhuman/tplink-tapo-c200-re/issues/1#issuecomment-742609974 User `root`, password `slprealtek` Typing `slp` over and over while U-Boot is running will interrupt the boot. --- Sometimes sends udp packets: cam:20002 phone:44028 ## :8800 streaming 8800 TCP unencrypted, video streams from app happen here Media decryption PoC code: https://git.depau.eu/Depau/tapo-decrypt-poc ```bash ./gradlew fatJar java -jar ./build/libs/tapo-decrypt-poc-fat-1.0-SNAPSHOT.jar \ --key-exchange "KEY_EXCHANGE_VALUE" --password "CLOUD_PASSWORD" > decrypted < encrypted ``` ### Handshake App sends an empty POST to ~~`:443/stream`~~ (EDIT: nevermind, it's 8800), cam replies with 401 Unauthorized but with a `WWW-Authenticate` header ```http POST /stream HTTP/1.1 Content-Type: multipart/mixed; boundary=--client-stream-boundary-- User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; ONEPLUS A3003 Build/PQ3A.190801.002) Host: 192.168.3.237:8800 Connection: Keep-Alive Accept-Encoding: gzip Content-Length: 0 Response: HTTP/1.0 401 Unauthorized Server: Streamd Date: Sun, 29 Nov 2020 23:52:27 UTC Pragma: no-cache Cache-Control: no-cache Content-Length: 0 WWW-Authenticate: Digest realm="TP-Link IP-Camera",algorithm="MD5",qop="auth",nonce="--------",opaque="-----------" Connection: close ``` ### Live streaming Uses an HTTP-like protocol over port :8800, using the valued retrieved from the `WWW-Authenticate` on port :443 as the `Authorization` header ```http POST /stream HTTP/1.1 Host: 192.168.3.237:8800 Content-Type: multipart/mixed; boundary=--client-stream-boundary-- Authorization: Digest username="admin",realm="TP-Link IP-Camera",uri="/stream",algorithm=MD5,nonce="----------------------------",nc=00000001,cnonce="a9h5b7i3j2y8c0a6",qop=auth,response="6a36396259101d6ce4e4a0e2dec9db57",opaque="64943214654649846565646421" User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; ONEPLUS A3003 Build/PQ3A.190801.002) Connection: keep-alive Content-Length: -1 HTTP/1.0 200 OK Server: Streamd Date: Wed, 30 Sep 2020 03:20:57 UTC Content-Type: multipart/mixed;boundary=--device-stream-boundary-- Pragma: no-cache Cache-Control: no-cache Key-Exchange: cipher="AES_128_CBC" username="admin" padding="PKCS7_16" algorithm="MD5" nonce="---------------------------------------------" Connection: keep-alive ----client-stream-boundary-- Content-Type: application/json Content-Length: 120 {"type":"request","seq":1,"params":{"preview":{"channels":[0],"resolutions":["HD"],"audio":["default"]},"method":"get"}} ----device-stream-boundary-- Content-Type: application/json Content-Length: 74 X-If-Encrypt: 0 {"type":"response", "seq":1, "params":{"error_code":0, "session_id":"10"}} ----device-stream-boundary-- Content-Type: application/json Content-Length: 106 X-Session-Id: 10 X-If-Encrypt: 0 {"type":"notification", "params":{"event_type":"channel_motor_status", "channels":[0], "status":["idle"]}} ----device-stream-boundary-- Content-Type: application/json Content-Length: 104 X-Session-Id: 10 X-If-Encrypt: 0 {"type":"notification", "params":{"event_type":"channel_lens_mask_info", "channels":0, "enabled":"off"}} ----device-stream-boundary-- Content-Type: video/mp2t Content-Length: 384 X-Session-Id: 10 X-If-Encrypt: 1 [likely video data] ----device-stream-boundary-- Content-Type: video/mp2t Content-Length: 384 X-Session-Id: 10 X-If-Encrypt: 1 [likely encrypted video] ``` ### "Call" feature ```http POST /stream HTTP/1.1 Host: 192.168.3.237:8800 Content-Type: multipart/mixed; boundary=--client-stream-boundary-- Authorization: Digest username="admin",realm="TP-Link IP-Camera",uri="/stream",algorithm=MD5,nonce="---------------------",nc=00000001,cnonce="a9h5b7i3j2y8c0a6",qop=auth,response="882d8fbad3de8912f9fd116abade612a",opaque="64943214654649846565646421" User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; ONEPLUS A3003 Build/PQ3A.190801.002) Connection: keep-alive Content-Length: -1 ----client-stream-boundary-- Content-Type: application/json Content-Length: 74 {"type":"request","seq":1,"params":{"talk":{"mode":"aec"},"method":"get"}} ----client-stream-boundary-- X-If-Encrypt: 1 X-Session-Id: 8 Content-Type: audio/mp2t Content-Length: 1328 ``` ### Recording playback Recorded video info is retrieved over :443: Retrieves user ID for use in the `id` field later ```json { "method": "multipleRequest", "params": { "requests": [ { "method": "getUserID", "params": { "system": { "get_user_id": "null" } } } ] } } ``` ```json { "error_code": 0, "result": { "responses": [ { "error_code": 0, "method": "getUserID", "result": { "user_id": 15 } } ] } } ``` Then it searches the playback memory, id is the user id: ```json { "method": "multipleRequest", "params": { "requests": [ { "method": "searchVideoOfDay", "params": { "playback": { "search_video_utility": { "channel": 0, "date": "20201130", "end_index": 99, "id": 15, "start_index": 0 } } } } ] } } ``` ```json { "error_code": 0, "result": { "responses": [ { "error_code": 0, "method": "searchVideoOfDay", "result": { "playback": { "search_video_results": [ { "search_video_results_1": { "endTime": 1606693987, "startTime": 1606693925, "vedio_type": "2" } }, { "search_video_results_2": { "endTime": 1606694021, "startTime": 1606694004, "vedio_type": "1" } } ] } } } ] } } ``` Then the video is streamed over :8800 ```http POST /stream HTTP/1.1 Host: 192.168.3.237:8800 Content-Type: multipart/mixed; boundary=--client-stream-boundary-- Authorization: Digest username="admin",realm="TP-Link IP-Camera",uri="/stream",algorithm=MD5,nonce="----",nc=00000001,cnonce="a9h5b7i3j2y8c0a6",qop=auth,response="------",opaque="64943214654649846565646421" User-Agent: Dalvik/2.1.0 (Linux; U; Android 9; ONEPLUS A3003 Build/PQ3A.190801.002) Connection: keep-alive Content-Length: -1 HTTP/1.0 200 OK Server: Streamd Date: Sun, 29 Nov 2020 23:54:59 UTC Content-Type: multipart/mixed;boundary=--device-stream-boundary-- Pragma: no-cache Cache-Control: no-cache Key-Exchange: cipher="AES_128_CBC" username="admin" padding="PKCS7_16" algorithm="MD5" nonce="--------" Connection: keep-alive ----client-stream-boundary-- X-Data-Window-Size: 50 Content-Type: application/json Content-Length: 155 {"type":"request","seq":11,"params":{"playback":{"client_id":15,"channels":[0],"scale":"1/1","start_time":"1606694004","event_type":[1,2]},"method":"get"}} ----device-stream-boundary-- Content-Type: application/json Content-Length: 74 X-If-Encrypt: 0 {"type":"response", "seq":11, "params":{"error_code":0, "session_id":"1"}} ----device-stream-boundary-- Content-Type: video/mp2t Content-Length: 6032 X-Session-Id: 1 X-If-Encrypt: 1 X-Data-Sequence: 1 [data] ``` ## Method mapping As found in root filesystem: ```json { "getSdCardStatus": {"method":"get"}, "formatSdCard": {"method":"do"}, "getSdCardFormatStatus": {"method":"do"}, "getTimezone": {"method":"get"}, "setTimezone": {"method":"set"}, "getDeviceInfo": {"method":"get"}, "getDeviceAlias": {"method":"get"}, "setDeviceAlias": {"method":"set"}, "getLedStatus": {"method":"get"}, "setLedStatus": {"method":"set"}, "getClockStatus": {"method":"get"}, "getConnectionType": {"method":"do"}, "getUserID": {"method":"do"}, "getDeviceIpAddress": {"method":"get"}, "getReboot": {"method":"get"}, "setReboot": {"method":"set"}, "rebootDevice": {"method":"do"}, "reset": {"method":"do"}, "getLastAlarmInfo": {"method":"get"}, "getAlertConfig": {"method":"get"}, "setAlertConfig": {"method":"set"}, "getAlertPlan": {"method":"get"}, "setAlertPlan": {"method":"set"}, "getCloudConfig": {"method":"get"}, "unbindCloud": {"method":"do"}, "bindToCloud": {"method":"do"}, "getBindStatus": {"method":"get"}, "logout": {"method":"do"}, "checkFirmwareVersionByCloud": {"method":"do"}, "getFirmwareUpdateStatus": {"method":"get"}, "startFirmwareUpgrade": {"method":"do"}, "getDetectionConfig": {"method":"get"}, "setDetectionConfig": {"method":"set"}, "getDetectionRegion": {"method":"get"}, "addDetectionRegion": {"method":"do"}, "changeAdminPassword": {"method":"do"}, "getThirdAccount": {"method":"get"}, "changeThirdAccount": {"method":"do"}, "verifyThirdAccount": {"method":"do"}, "getP2PSharePassword": {"method":"do"}, "getAESEncryptKey": {"method":"do"}, "motorMove": {"method":"do"}, "addMotorPostion": {"method":"do"}, "motorMoveToPreset": {"method":"do"}, "relativeMove": {"method":"do"}, "singalMove": {"method":"do"}, "stopMove": {"method":"do"}, "manualCalibrate": {"method":"do"}, "cruiseMove": {"method":"do"}, "cruiseStop": {"method":"do"}, "getPresetConfig": {"method":"get"}, "deletePreset": {"method":"do"}, "getMediaEncrypt": {"method":"get"}, "setMediaEncrypt": {"method":"set"}, "getVideoQualities": {"method":"get"}, "getServerPort": {"method":"get"}, "getScaleList": {"method":"get"}, "searchVideoOfDay": {"method":"do"}, "searchDateWithVideo": {"method":"do"}, "getLensMaskConfig": {"method":"get"}, "setLensMaskConfig": {"method":"set"}, "getLightFrequencyInfo": {"method":"get"}, "setLightFrequencyInfo": {"method":"set"}, "getDayNightModeConfig": {"method":"get"}, "setDayNightModeConfig": {"method":"set"}, "getOsd": {"method":"get"}, "setOsd": {"method":"set"}, "getRecordPlan": {"method":"get"}, "setRecordPlan": {"method":"set"}, "getCircularRecordingConfig": {"method":"get"}, "setCircularRecordingConfig": {"method":"set"}, "getRotationStatus": {"method":"get"}, "setRotationStatus": {"method":"set"}, "getAudioConfig": {"method":"get"}, "setMicrophoneVolume": {"method":"set"}, "setSpeakerVolume": {"method":"set"}, "getAppComponentList": {"method":"get"}, "getDiagnoseMode": {"method":"get"}, "setDiagnoseMode": {"method":"set"}, "checkDiagnoseStatus": {"method":"do"}, "getLdc": {"method":"get"}, "setLdc": {"method":"set"}, "getCoverConfig": {"method":"get"}, "setCoverConfig": {"method":"set"}, "getCoverRegion": {"method":"get"}, "addCoverRegion": {"method":"do"}, "getTargetTrackConfig": {"method":"get"}, "setTargetTrackConfig": {"method":"set"}, "getFirmwareAFResult": {"method":"do"}, "getBCDConfig": {"method":"get"}, "setBCDConfig": {"method":"set"}, "getMsgPushConfig": {"method":"get"}, "setMsgPushConfig": {"method":"set"}, "getMsgPushPlan": {"method":"get"}, "setMsgPushPlan": {"method":"set"}, "NULL":"NULL" } ``` ### All command types Format: ```json ["module", "section", "data class or collection type"] ``` ```json [ ["DEVICE_INFO", "BASIC_INFO", "BasicInfo.class"], ["DEVICE_INFO", "INFO", "DetailInfo.class"], ["SYSTEM", "SYS", "SystemInfo.class"], ["SYSTEM", "BASIC", "Timezone.class"], ["SYSTEM", "USER_ID", "VodUserId.class"], ["ON_BOARDING", "SCAN", "WifiList.class"], ["ON_BOARDING", "CONNECT", "ConnectResult.class"], ["ON_BOARDING", "GET_CONNECT_STATUS", "ConnectStatus.class"], ["LED", "CONFIG", "LedStatus.class"], ["OSD", "OSD_LABEL_INFO", "<List<? extends Map<String, ? extends OsdElement>>>"], ["OSD", "OSD_DATE", "OsdElement.class"], ["OSD", "OSD_WEEK", "OsdElement.class"], ["OSD", "OSD_FONT", "OsdFont.class"], ["HARD_DISK_MANAGE", "HARD_DISK_LOOP", "HardDiskLoop.class"], ["HARD_DISK_MANAGE", "HARD_DISK_INFO", "List<? extends Map<String, ? extends HardDiskInfo>>"], ["WLAN", "WLAN_DEFAULT_AP", "DefaultAp.class"], ["MSG_ALARM", "MSG_ALARM_INFO", "AlarmInfo.class"], ["MSG_ALARM_PLAN", "MSG_ALARM_PLAN", "AlarmPlanInfo.class"], ["MSG_PUSH", "MSG_PUSH_INFO", "MsgPushInfo.class"], ["MSG_PUSH_PLAN", "MSG_PUSH_PLAN", "MsgPushPlanInfo.class"], ["CERT", "CERT_MEDIA_ENCRYPT", "MediaEncrypt.class"], ["CERT", "CERT_SERVER_PORT", "StreamService.class"], ["CLOUD_STATUS", "CLOUD_BIND", "BindStatus.class"], ["CLOUD_STATUS", "CLOUD_UNBIND", "BindStatus.class"], ["LENS_MASK", "LENS_MASK_INFO", "LensMaskInfo.class"], ["CLOUD_CONFIG", "UPGRADE_STATUS", "FirmwareUpdateStatus.class"], ["PLAYBACK", "PLAYBACK_MONTHLY", "List<? extends Map<String, ? extends YearlyPlaybackItem>>"], ["PLAYBACK", "PLAYBACK_DAILY", "List<? extends Map<String, ? extends DailyPlaybackItem>>"], ["IMAGE", "COMMON", "Light.class"], ["IMAGE", "IMAGE_SWITCH", "ImageFlip.class"], ["TIMING_REBOOT", "REBOOT", "RebootInfo.class"], ["NETWORK", "WAN", "Wan.class"], ["RECORD_PLAN", "CHN1_CHANNEL", "RecordPlanInfo.class"], ["CLOUD_CONFIG", "NEW_FIRMWARE", "NewFirmware.class"], ["MOTION_DETECTION", "MOTION_DET", "MotionDetectConfig.class"], ["MOTION_DETECTION", "REGION_INFO", "List<? extends Map<String, ? extends MotionDetectRegion>>"], ["MOTOR", "MOVE", "CloudTerraceMoveInfo.class"], ["PRESET", "SET_PRESET", "CloudTerracePoint.class"], ["PRESET", "GOTO_PRESET", "CloudTerraceResetInfo.class"], ["USER_MANAGEMENT", "THIRD_ACCOUNT", "AccountInfo.class"], ["VIDEO", "VIDEO_MAIN", "VideoQuality.class"], ["VIDEO", "VIDEO_MINOR", "VideoQuality.class"], ["VIDEO", "SET_RESOLUTION", "Resolution.class"], ["VIDEO_CAPABILITY", "VIDEO_MAIN", "VideoCapability.class"], ["VIDEO_CAPABILITY", "VIDEO_MINOR", "VideoCapability.class"], ["MOTOR", "MANUAL_CALI", "String.class"], ["PRESET", "PRESET", "MarkedPositionListInfo.class"], ["CLOUD_STATUS", "CLIENT_INFO", "FirmwareUpdateInfo.class"], ["AUDIO_CONFIG", "MICROPHONE", "MicroPhoneInfo.class"], ["AUDIO_CONFIG", "SPEAKER", "SpeakerInfo.class"], ["AUDIO_CONFIG", "RECORD_AUDIO", "RecordAudioInfo.class"], ["SYSTEM", "CLOCK_STATUS", "ClockStatus.class"], ["CLOUD_CONFIG", "UPGRADE_INFO", "LatestFirmwareInfo.class"], ["SYSTEM", "LAST_ALARM_INFO", "LastAlarmInfo.class"], ["MOTOR", "CRUISE_STOP", "String.class"], ["APP_COMPONENT", "APP_COMPONENT_LIST", "CameraComponent.class"], ["TAMPER_DETECTION", "TAMPER_DET", "TamperDetectConfig.class"], ["INTRUSION_DETECTION", "DETECTION", "DetectionInfo.class"], ["INTRUSION_DETECTION", "ARMING_SCHEDULE", "ArmScheduleInfo.class"], ["INTRUSION_DETECTION", "REGION_INFO", "List<? extends Map<String, ? extends IntrusionDetectionRegion>>"], ["LINE_CROSSING_DETECTION", "DETECTION", "DetectionInfo.class"], ["LINE_CROSSING_DETECTION", "ARMING_SCHEDULE", "ArmScheduleInfo.class"] ["LINE_CROSSING_DETECTION", "REGION_INFO", "List<? extends Map<String, ? extends LineCrossingDetectionRegion>>"] ] ``` ### Modules ```json { "DATA": "data", "ON_BOARDING": "onboarding", "SYSTEM": "system", "DEVICE_INFO": "device_info", "LED": "led", "OSD": "OSD", "USER_MANAGEMENT": "user_management", "HARD_DISK_MANAGE": "harddisk_manage", "VIDEO": "video", "VIDEO_CAPABILITY": "video_capability", "WLAN": "wlan", "NETWORK": "network", "MSG_ALARM": "msg_alarm", "MSG_ALARM_PLAN": "msg_alarm_plan", "CERT": "cet", "CLOUD_STATUS": "cloud_status", "CLOUD_CONFIG": "cloud_config", "PLAYBACK": "playback", "LENS_MASK": "lens_mask", "TIMING_REBOOT": "timing_reboot", "IMAGE": "image", "RECORD_PLAN": "record_plan", "MOTION_DETECTION": "motion_detection", "MOTOR": "motor", "PRESET": "preset", "AUDIO_CONFIG": "audio_config", "LANGUAGE": "language", "APP_COMPONENT": "app_component", "EMPTY": "null", "MSG_PUSH": "msg_push", "MSG_PUSH_PLAN": "msg_push_plan", "TAMPER_DETECTION": "tamper_detection", "INTRUSION_DETECTION": "intrusion_detection", "LINE_CROSSING_DETECTION": "linecrossing_detection" } ``` ### Sections ```json { "NAME": "name", "TABLE": "table", "SCAN": "scan", "BASIC_INFO": "basic_info", "INFO": "info", "CONNECT": "connect", "GET_CONNECT_STATUS": "get_connect_status", "SYS": "sys", "CLOCK_STATUS": "clock_status", "BASIC": "basic", "NTP": "ntp", "OSD_INFO": "osd_info", "CONFIG": "config", "CHANGE_PASSWORD": "change_password", "CHANGE_ADMIN_PASSWORD": "change_admin_password", "OSD_LABEL_INFO": "label_info", "OSD_LABEL_INFO_FIRST": "label_info_1", "OSD_FONT": "font", "OSD_DATE": "date", "OSD_WEEK": "week", "HARD_DISK_LOOP": "harddisk", "HARD_DISK_INFO": "hd_info", "HARD_DISK_FORMAT": "format_hd", "HARD_DISK_FORMAT_STATUS": "get_format_status", "VIDEO_MAIN": "main", "VIDEO_MINOR": "minor", "SET_RESOLUTION": "set_resolution", "WLAN_DEFAULT_AP": "default_ap", "GET_NETWORK_INFO": "get_connection_type", "MSG_ALARM_INFO": "chn1_msg_alarm_info", "MSG_ALARM_PLAN": "chn1_msg_alarm_plan", "CERT_MEDIA_ENCRYPT": "media_encrypt", "CERT_SERVER_PORT": "vhttpd", "CLOUD_BIND": "bind", "CLOUD_UNBIND": "unbind", "CLOUD_DEVICE_STATUS": "device_status", "LENS_MASK_INFO": "lens_mask_info", "PLAYBACK_DATE_FILTER": "search_year_utility", "PLAYBACK_TIME_FILTER": "search_video_utility", "PLAYBACK_MONTHLY": "search_results", "PLAYBACK_DAILY": "search_video_results", "USER_ID": "get_user_id", "REBOOT": "reboot", "RESET": "reset", "SOFT_RESET": "soft_reset", "COMMON": "common", "CHN1_CHANNEL": "chn1_channel", "ALERT_INFO": "chn1_msg_alarm_info", "UPGRADE_INFO": "upgrade_info", "NEW_FIRMWARE": "new_firmware", "MOTION_DET": "motion_det", "MOTION_DETECTION_ADD_REGION": "add_md_regions", "REGION_INFO": "region_info", "MOVE": "move", "MOVE_STEP": "movestep", "CRUISE": "cruise", "CRUISE_STOP": "cruise_stop", "STOP": "stop", "PRESET": "preset", "SET_PRESET": "set_preset", "GOTO_PRESET": "goto_preset", "REMOVE_PRESET": "remove_preset", "THIRD_ACCOUNT": "third_account", "CHANGE_THIRD_ACCOUNT": "change_third_account", "VERIFY_THIRD_ACCOUNT": "verify_third_account", "IMAGE_SWITCH": "switch", "MANUAL_CALI": "manual_cali", "FIRMWARE_DOWNLOAD": "fw_download", "FIRMWARE_NOTIFY": "check_fw_version", "CLIENT_INFO": "client_info", "SPEAKER": "speaker", "MICROPHONE": "microphone", "UPGRADE_STATUS": "upgrade_status", "WAN": "wan", "LAST_ALARM_INFO": "last_alarm_info", "APP_COMPONENT_LIST": "app_component_list", "SWITCH": "switch", "CHECK_DIAGNOSE_STATUS": "check_diagnose_status", "GET_P2P_SHARE_PWD": "get_p2p_sharepwd", "GET_AES_KEY": "get_aes_key", "EMPTY": "null", "MSG_PUSH_INFO": "chn1_msg_push_info", "MSG_PUSH_PLAN": "chn1_msg_push_plan", "RECORD_AUDIO": "record_audio", "TAMPER_DET": "tamper_det", "DETECTION": "detection", "ARMING_SCHEDULE": "arming_schedule", "ADD_REGIONS": "add_regions" } ``` ### Methods ```json { "PASS_THROUGH": "passthrough", "MULTIPLE_REQUEST": "multipleRequest", "SCAN_WIFI_LIST": "scanApList", "CHANGE_PASSWORD": "changePassword", "GET_SD_CARD_STATUS": "getSdCardStatus", "FORMAT_SD_CARD": "formatSdCard", "GET_SD_CARD_FORMAT_STATUS": "getSdCardFormatStatus", "GET_TIMEZONE": "getTimezone", "SET_TIMEZONE": "setTimezone", "GET_DEVICE_INFO": "getDeviceInfo", "GET_DEVICE_ALIAS": "getDeviceAlias", "SET_DEVICE_ALIAS": "setDeviceAlias", "GET_CONNECTION_TYPE": "getConnectionType", "GET_DEVICE_IP_ADDRESS": "getDeviceIpAddress", "GET_REBOOT": "getReboot", "SET_REBOOT": "setReboot", "REBOOT_DEVICE": "rebootDevice", "RESET": "reset", "SOFT_RESET": "softReset", "GET_LED_STATUS": "getLedStatus", "SET_LED_STATUS": "setLedStatus", "GET_CLOCK_STATUS": "getClockStatus", "GET_USER_ID": "getUserID", "GET_SCALE_LIST": "getScaleList", "SEARCH_VIDEO_OF_DAY": "searchVideoOfDay", "SEARCH_DATE_WITH_VIDEO": "searchDateWithVideo", "GET_LAST_ALARM_INFO": "getLastAlarmInfo", "GET_DETECTION_CONFIG": "getDetectionConfig", "SET_DETECTION_CONFIG": "setDetectionConfig", "GET_DETECTION_REGION": "getDetectionRegion", "ADD_DETECTION_REGION": "addDetectionRegion", "GET_ALERT_CONFIG": "getAlertConfig", "SET_ALERT_CONFIG": "setAlertConfig", "GET_ALERT_PLAN": "getAlertPlan", "SET_ALERT_PLAN": "setAlertPlan", "GET_MSG_PUSH_CONFIG": "getMsgPushConfig", "SET_MSG_PUSH_CONFIG": "setMsgPushConfig", "GET_MSG_PUSH_PLAN": "getMsgPushPlan", "SET_MSG_PUSH_PLAN": "setMsgPushPlan", "GET_CLOUD_CONFIG": "getCloudConfig", "CHECK_FIRMWARE_VERSION_BY_CLOUD": "checkFirmwareVersionByCloud", "GET_FIRMWARE_UPDATE_STATUS": "getFirmwareUpdateStatus", "START_FIRMWARE_UPGRADE": "startFirmwareUpgrade", "UNBIND_CLOUD": "unbindCloud", "GET_BIND_STATUS": "getBindStatus", "GET_THIRD_ACCOUNT": "getThirdAccount", "CHANGE_THIRD_ACCOUNT": "changeThirdAccount", "VERIFY_THIRD_ACCOUNT": "verifyThirdAccount", "LOGIN": "login", "LOGOUT": "logout", "BIND_TO_CLOUD": "bindToCloud", "CHANGE_ADMIN_PASSWORD": "changeAdminPassword", "SET_MEDIA_ENCRYPT": "setMediaEncrypt", "SET_LANGUAGE": "setLanguage", "SCAN_AP_LIST": "scanApList", "CONNECT_AP": "connectAp", "GET_CONNECT_STATUS": "getConnectStatus", "MOTOR_MOVE": "motorMove", "ADD_MOTOR_POSITION": "addMotorPostion", "MOTOR_MOVE_TO_PRESET": "motorMoveToPreset", "RELATIVE_MOVE": "relativeMove", "SIGNAL_MOVE": "singalMove", "STOP_MOVE": "stopMove", "MANUAL_CALIBRATE": "manualCalibrate", "CRUISE_MOVE": "cruiseMove", "CRUISE_STOP": "cruiseStop", "GET_PRESET_CONFIG": "getPresetConfig", "DELETE_PRESET": "deletePreset", "GET_MEDIA_ENCRYPT": "getMediaEncrypt", "GET_VIDEO_QUALITIES": "getVideoQualities", "GET_SERVER_PORT": "getServerPort", "SET_RESOLUTION": "setResolution", "GET_VIDEO_CAPABILITY": "getVideoCapability", "GET_LENS_MASK_CONFIG": "getLensMaskConfig", "SET_LENS_MASK_CONFIG": "setLensMaskConfig", "GET_LIGHT_FREQUENCY_INFO": "getLightFrequencyInfo", "SET_LIGHT_FREQUENCY_INFO": "setLightFrequencyInfo", "GET_DAY_NIGHT_MODE_CONFIG": "getDayNightModeConfig", "SET_DAY_NIGHT_MODE_CONFIG": "setDayNightModeConfig", "GET_OSD": "getOsd", "SET_OSD": "setOsd", "GET_RECORD_PLAN": "getRecordPlan", "SET_RECORD_PLAN": "setRecordPlan", "GET_CIRCULAR_RECORDING_CONFIG": "getCircularRecordingConfig", "SET_CIRCULAR_RECORDING_CONFIG": "setCircularRecordingConfig", "GET_ROTATION_STATUS": "getRotationStatus", "SET_ROTATION_STATUS": "setRotationStatus", "GET_AUDIO_CONFIG": "getAudioConfig", "SET_RECORD_AUDIO": "setRecordAudio", "SET_MICROPHONE_VOLUME": "setMicrophoneVolume", "SET_SPEAKER_VOLUME": "setSpeakerVolume", "GET_APP_COMPONENT_LIST": "getAppComponentList", "GET_LDC": "getLdc", "SET_LDC": "setLdc", "CHECK_DIAGNOSE_STATUS": "checkDiagnoseStatus", "GET_DIAGNOSE_MODE": "getDiagnoseMode", "SET_DIAGNOSE_MODE": "setDiagnoseMode", "GET_P2P_SHARE_PWD": "getP2PSharePassword", "GET_AES_ENCRYPT_KEY": "getAESEncryptKey", "GET_TAMPER_DETECTION_CONFIG": "getTamperDetectionConfig", "SET_TAMPER_DETECTION_CONFIG": "setTamperDetectionConfig", "GET_INTRUSION_DETECTION_CONFIG": "getIntrusionDetectionConfig", "SET_INTRUSION_DETECTION_CONFIG": "setIntrusionDetectionConfig", "SET_INTRUSION_DETECTION_SCHEDULE": "setIntrusionDetectionSchedule", "GET_INTRUSION_DETECTION_REGION": "getIntrusionDetectionRegion", "ADD_INTRUSION_DETECTION_REGION": "addIntrusionDetectionRegion", "GET_LINE_CROSSING_DETECTION_CONFIG": "getLinecrossingDetectionConfig", "SET_LINE_CROSSING_DETECTION_CONFIG": "setLinecrossingDetectionConfig", "SET_LINE_CROSSING_DETECTION_SCHEDULE": "setLinecrossingDetectionSchedule", "GET_LINE_CROSSING_DETECTION_REGION": "getLinecrossingDetectionRegion", "ADD_LINE_CROSSING_DETECTION_REGION": "addLinecrossingDetectionRegion" } ``` ### All request generators Java code which still needs to be REd, all fields from the model POJOs need to be extracted ```java public class RequestGenerator { /* renamed from: a */ private final SimpleDateFormat f21204a = new SimpleDateFormat("yyyyMMdd", Locale.US); /* renamed from: a */ public Request<Account> mo37397a(Account account) { if (!account.getHashed()) { account = Model.passwordDigest(account); } return new Request<>(Constants.LOGIN, account); } /* renamed from: a */ private Request<MultipleRequest> m26435a(Request<Wrapper> request) { return m26441b(new Request<>(request.getMethod(), new Wrappers(Collections.singletonList(request.getParams())))); } /* renamed from: b */ private Request<MultipleRequest> m26441b(Request<Wrappers> request) { return mo37424a(Collections.singletonList(request)); } /* renamed from: a */ public Request<MultipleRequest> mo37424a(List<Request<Wrappers>> list) { return new Request<>(Constants.MULTIPLE_REQUEST, new MultipleRequest(list)); } /* renamed from: a */ public Request<MultipleRequest> mo37422a(String str, String str2) { return m26435a(new Request<>(Constants.CHANGE_ADMIN_PASSWORD, new Wrapper(Module.USER_MANAGEMENT, Section.CHANGE_ADMIN_PASSWORD, new AccountInfo(new Account("admin", C4901g.m26588a(str), false), str2)))); } /* renamed from: a */ public Request<Wrapper> mo37394a() { return new Request<>(Constants.SCAN_WIFI_LIST, new Wrapper(Module.ON_BOARDING, Section.SCAN, Collections.emptyMap())); } /* renamed from: b */ public Request<MultipleRequest> mo37430b() { return m26435a(new Request<>(Constants.GET_DEVICE_INFO, new Wrapper(Module.DEVICE_INFO, Section.NAME, Arrays.asList(Section.BASIC_INFO.getValue(), Section.INFO.getValue())))); } /* renamed from: a */ public Request<Wrapper<Wifi>> mo37420a(Wifi wifi) { return new Request<>(Constants.CONNECT_AP, new Wrapper(Module.ON_BOARDING, Section.CONNECT, wifi)); } /* renamed from: c */ public Request<Wrapper> mo37439c() { return new Request<>(Constants.GET_CONNECT_STATUS, new Wrapper(Module.ON_BOARDING, Section.GET_CONNECT_STATUS, Collections.emptyMap())); } /* renamed from: d */ public Request<MultipleRequest> mo37443d() { List asList = Arrays.asList(Section.OSD_DATE.getValue(), Section.OSD_WEEK.getValue(), Section.OSD_FONT.getValue()); List singletonList = Collections.singletonList(Section.OSD_LABEL_INFO.getValue()); Wrapper wrapper = new Wrapper(Module.OSD, Section.NAME, asList); Wrapper wrapper2 = new Wrapper(Module.OSD, Section.TABLE, singletonList); return m26441b(new Request<>(Constants.GET_OSD, new Wrappers(Arrays.asList(wrapper, wrapper2)))); } /* renamed from: a */ public Request<MultipleRequest> mo37428a(boolean z, String str) { String str2 = z ? "on" : "off"; OsdElement osdElement = new OsdElement("0", "0", null, str2); OsdElement osdElement2 = new OsdElement("0", "0", null, "off"); OsdElement osdElement3 = new OsdElement("0", "500", str, str2); OsdFont osdFont = new OsdFont(); Wrapper wrapper = new Wrapper(Module.OSD, Section.OSD_DATE, osdElement); Wrapper wrapper2 = new Wrapper(Module.OSD, Section.OSD_WEEK, osdElement2); Wrapper wrapper3 = new Wrapper(Module.OSD, Section.OSD_LABEL_INFO_FIRST, osdElement3); return m26441b(new Request<>(Constants.SET_OSD, new Wrappers(Arrays.asList(wrapper, wrapper2, new Wrapper(Module.OSD, Section.OSD_FONT, osdFont), wrapper3)))); } /* renamed from: a */ public Request<MultipleRequest> mo37404a(CameraComponent cameraComponent) { ArrayList arrayList = new ArrayList(); if (cameraComponent.hasComponent(ComponentType.SD_CARD)) { Wrapper wrapper = new Wrapper(Module.HARD_DISK_MANAGE, Section.NAME, Collections.singletonList(Section.HARD_DISK_LOOP.getValue())); Wrapper wrapper2 = new Wrapper(Module.HARD_DISK_MANAGE, Section.TABLE, Collections.singletonList(Section.HARD_DISK_INFO.getValue())); arrayList.add(wrapper); arrayList.add(wrapper2); } if (cameraComponent.hasComponent(ComponentType.ALERT)) { arrayList.add(new Wrapper(Module.MSG_ALARM, Section.NAME, Collections.singletonList(Section.MSG_ALARM_INFO.getValue()))); } if (cameraComponent.hasComponent(ComponentType.LED)) { arrayList.add(new Wrapper(Module.LED, Section.NAME, Collections.singletonList(Section.CONFIG.getValue()))); } if (cameraComponent.hasComponent(ComponentType.RECORD)) { arrayList.add(new Wrapper(Module.RECORD_PLAN, Section.NAME, Collections.singletonList(Section.CHN1_CHANNEL.getValue()))); } if (cameraComponent.hasComponent(ComponentType.TIME_ZONE)) { arrayList.add(new Wrapper(Module.SYSTEM, Section.NAME, Collections.singletonList(Section.BASIC.getValue()))); } if (cameraComponent.hasComponent(ComponentType.ACCOUNT)) { arrayList.add(new Wrapper(Module.USER_MANAGEMENT, Section.NAME, Collections.singletonList(Section.THIRD_ACCOUNT.getValue()))); } if (cameraComponent.isSupportMsgPush()) { arrayList.add(new Wrapper(Module.MSG_PUSH, Section.NAME, Collections.singletonList(Section.MSG_PUSH_INFO.getValue()))); } if (cameraComponent.hasComponent(ComponentType.SYSTEM)) { Wrapper wrapper3 = new Wrapper(Module.WLAN, Section.NAME, Collections.singletonList(Section.WLAN_DEFAULT_AP.getValue())); Wrapper wrapper4 = new Wrapper(Module.CERT, Section.NAME, Collections.singletonList(Section.CERT_MEDIA_ENCRYPT.getValue())); Wrapper wrapper5 = new Wrapper(Module.IMAGE, Section.NAME, Collections.singletonList(Section.IMAGE_SWITCH.getValue())); Wrapper wrapper6 = new Wrapper(Module.TIMING_REBOOT, Section.NAME, Collections.singletonList(Section.REBOOT.getValue())); Wrapper wrapper7 = new Wrapper(Module.DEVICE_INFO, Section.NAME, Arrays.asList(Section.BASIC_INFO.getValue(), Section.INFO.getValue())); Wrapper wrapper8 = new Wrapper(Module.NETWORK, Section.NAME, Collections.singletonList(Section.WAN.getValue())); arrayList.add(wrapper3); arrayList.add(wrapper4); arrayList.add(wrapper5); arrayList.add(wrapper6); arrayList.add(wrapper7); arrayList.add(wrapper8); } if (cameraComponent.hasComponent(ComponentType.VIDEO) && cameraComponent.getComponent(ComponentType.VIDEO) >= 2) { arrayList.add(new Wrapper(Module.VIDEO, Section.NAME, Collections.singletonList(Section.VIDEO_MAIN.getValue()))); arrayList.add(new Wrapper(Module.VIDEO_CAPABILITY, Section.NAME, Collections.singletonList(Section.VIDEO_MAIN.getValue()))); } return m26441b(new Request<>(Constants.GET_LED_STATUS, new Wrappers(arrayList))); } /* renamed from: e */ public Request<MultipleRequest> mo37447e() { Wrapper wrapper = new Wrapper(Module.HARD_DISK_MANAGE, Section.TABLE, Collections.singletonList(Section.HARD_DISK_INFO.getValue())); return m26441b(new Request<>(Constants.GET_SD_CARD_STATUS, new Wrappers(Arrays.asList(wrapper)))); } /* renamed from: f */ public Request<MultipleRequest> mo37450f() { ArrayList arrayList = new ArrayList(); Wrapper wrapper = new Wrapper(Module.HARD_DISK_MANAGE, Section.NAME, Collections.singletonList(Section.HARD_DISK_LOOP.getValue())); Wrapper wrapper2 = new Wrapper(Module.HARD_DISK_MANAGE, Section.TABLE, Collections.singletonList(Section.HARD_DISK_INFO.getValue())); arrayList.add(wrapper); arrayList.add(wrapper2); return m26441b(new Request<>(Constants.GET_SD_CARD_STATUS, new Wrappers(arrayList))); } /* renamed from: a */ public Request<MultipleRequest> mo37399a(Account account, String str, String str2, String str3, RecordPlanInfo recordPlanInfo) { return mo37424a(Arrays.asList(new Request(Constants.CHANGE_ADMIN_PASSWORD, m26437a(new Wrapper(Module.USER_MANAGEMENT, Section.CHANGE_ADMIN_PASSWORD, new AccountInfo(new Account("admin", C4901g.m26588a(str), false), account.copy(account.getUsername(), account.getPassword(), false).getPassword())))), new Request(Constants.SET_OSD, m26437a(new Wrapper(Module.CERT, Section.CERT_MEDIA_ENCRYPT, new MediaEncrypt("on")))), new Request(Constants.SET_TIMEZONE, m26437a(new Wrapper(Module.SYSTEM, Section.BASIC, new Timezone(str2, str3)))), new Request(Constants.SET_RECORD_PLAN, m26437a(new Wrapper(Module.RECORD_PLAN, Section.CHN1_CHANNEL, recordPlanInfo))))); } /* renamed from: a */ public Request<MultipleRequest> mo37398a(Account account, String str, String str2, RecordPlanInfo recordPlanInfo) { Account copy = account.copy(account.getUsername(), account.getPassword(), false); return mo37424a(Arrays.asList(new Request(Constants.BIND_TO_CLOUD, new Wrappers(Collections.singletonList(new Wrapper(Module.CLOUD_CONFIG, Section.CLOUD_BIND, copy)))), new Request(Constants.CHANGE_ADMIN_PASSWORD, m26437a(new Wrapper(Module.USER_MANAGEMENT, Section.CHANGE_ADMIN_PASSWORD, new AccountInfo(new Account("admin", "admin", false), copy.getPassword())))), new Request(Constants.SET_OSD, m26437a(new Wrapper(Module.CERT, Section.CERT_MEDIA_ENCRYPT, new MediaEncrypt("on")))), new Request(Constants.SET_TIMEZONE, m26437a(new Wrapper(Module.SYSTEM, Section.BASIC, new Timezone(str, str2)))), new Request(Constants.SET_RECORD_PLAN, m26437a(new Wrapper(Module.RECORD_PLAN, Section.CHN1_CHANNEL, recordPlanInfo))))); } /* renamed from: a */ public Request<MultipleRequest> mo37409a(LensMaskInfo lensMaskInfo) { return mo37424a(Collections.singletonList(new Request(Constants.SET_LENS_MASK_CONFIG, m26437a(new Wrapper(Module.LENS_MASK, Section.LENS_MASK_INFO, lensMaskInfo))))); } /* renamed from: b */ public Request<MultipleRequest> mo37433b(LensMaskInfo lensMaskInfo) { return mo37424a(Arrays.asList(new Request(Constants.SET_LENS_MASK_CONFIG, m26437a(new Wrapper(Module.LENS_MASK, Section.LENS_MASK_INFO, lensMaskInfo))), new Request(Constants.SET_LED_STATUS, m26437a(new Wrapper(Module.LED, Section.CONFIG, new LedStatus(lensMaskInfo.getEnabled().equals("on") ? "off" : "on")))))); } /* renamed from: g */ public Request<MultipleRequest> mo37452g() { return m26435a(new Request<>(Constants.GET_LENS_MASK_CONFIG, new Wrapper(Module.LENS_MASK, Section.NAME, Collections.singletonList(Section.LENS_MASK_INFO.getValue())))); } /* renamed from: h */ public Request<MultipleRequest> mo37453h() { return m26435a(new Request<>(Constants.GET_USER_ID, new Wrapper(Module.SYSTEM, Section.USER_ID, Section.EMPTY.getValue()))); } /* renamed from: a */ public Request<MultipleRequest> mo37423a(Date date, Date date2) { return m26435a(new Request<>(Constants.SEARCH_DATE_WITH_VIDEO, new Wrapper(Module.PLAYBACK, Section.PLAYBACK_DATE_FILTER, new YearlyPlaybackFilter(this.f21204a.format(date), this.f21204a.format(date2))))); } /* renamed from: a */ public Request<MultipleRequest> mo37396a(int i, Date date, int i2, int i3) { return m26435a(new Request<>(Constants.SEARCH_VIDEO_OF_DAY, new Wrapper(Module.PLAYBACK, Section.PLAYBACK_TIME_FILTER, new DailyPlaybackFilter(i, this.f21204a.format(date), i2, i3)))); } /* renamed from: a */ public Request<MultipleRequest> mo37421a(String str) { return m26435a(new Request<>(Constants.SET_LED_STATUS, new Wrapper(Module.LED, Section.CONFIG, new LedStatus(str)))); } /* renamed from: b */ public Request<MultipleRequest> mo37434b(String str) { SystemInfo systemInfo = new SystemInfo(); systemInfo.setAlias(str); return m26435a(new Request<>(Constants.SET_DEVICE_ALIAS, new Wrapper(Module.SYSTEM, Section.SYS, systemInfo))); } /* renamed from: b */ public Request<MultipleRequest> mo37435b(String str, String str2) { return m26435a(new Request<>(Constants.SET_TIMEZONE, new Wrapper(Module.SYSTEM, Section.BASIC, new Timezone(str, str2)))); } /* renamed from: a */ public Request<MultipleRequest> mo37415a(RebootInfo rebootInfo) { return m26435a(new Request<>(Constants.SET_REBOOT, new Wrapper(Module.TIMING_REBOOT, Section.REBOOT, rebootInfo))); } /* renamed from: i */ public Request<MultipleRequest> mo37454i() { return m26435a(new Request<>(Constants.REBOOT_DEVICE, new Wrapper(Module.SYSTEM, Section.REBOOT, Collections.emptyMap()))); } /* renamed from: j */ public Request<MultipleRequest> mo37455j() { return m26435a(new Request<>(Constants.RESET, new Wrapper(Module.SYSTEM, Section.RESET, Collections.emptyMap()))); } /* renamed from: k */ public Request<MultipleRequest> mo37456k() { return m26435a(new Request<>(Constants.SOFT_RESET, new Wrapper(Module.SYSTEM, Section.SOFT_RESET, Collections.emptyMap()))); } /* renamed from: l */ public Request<MultipleRequest> mo37457l() { return m26435a(new Request<>(Constants.GET_REBOOT, new Wrapper(Module.TIMING_REBOOT, Section.NAME, Collections.singletonList(Section.REBOOT.getValue())))); } /* renamed from: a */ public Request<MultipleRequest> mo37416a(RecordPlanInfo recordPlanInfo) { return m26435a(new Request<>(Constants.SET_RECORD_PLAN, new Wrapper(Module.RECORD_PLAN, Section.CHN1_CHANNEL, recordPlanInfo))); } /* renamed from: m */ public Request<MultipleRequest> mo37458m() { return m26435a(new Request<>(Constants.GET_RECORD_PLAN, new Wrapper(Module.RECORD_PLAN, Section.NAME, Collections.singletonList(Section.CHN1_CHANNEL.getValue())))); } /* renamed from: a */ public Request<MultipleRequest> mo37400a(AlarmInfo alarmInfo) { return m26435a(new Request<>(Constants.SET_ALERT_CONFIG, new Wrapper(Module.MSG_ALARM, Section.ALERT_INFO, alarmInfo))); } /* renamed from: a */ public Request<MultipleRequest> mo37401a(AlarmPlanInfo alarmPlanInfo) { return m26435a(new Request<>(Constants.SET_ALERT_PLAN, new Wrapper(Module.MSG_ALARM_PLAN, Section.MSG_ALARM_PLAN, alarmPlanInfo))); } /* renamed from: n */ public Request<MultipleRequest> mo37459n() { return m26435a(new Request<>(Constants.GET_ALERT_CONFIG, new Wrapper(Module.MSG_ALARM, Section.NAME, Collections.singletonList(Section.MSG_ALARM_INFO.getValue())))); } /* renamed from: o */ public Request<MultipleRequest> mo37460o() { return m26435a(new Request<>(Constants.GET_ALERT_PLAN, new Wrapper(Module.MSG_ALARM_PLAN, Section.NAME, Collections.singletonList(Section.MSG_ALARM_PLAN.getValue())))); } /* renamed from: a */ public Request<MultipleRequest> mo37412a(MsgPushInfo msgPushInfo) { return m26435a(new Request<>(Constants.SET_MSG_PUSH_CONFIG, new Wrapper(Module.MSG_PUSH, Section.MSG_PUSH_INFO, msgPushInfo))); } /* renamed from: a */ public Request<MultipleRequest> mo37413a(MsgPushPlanInfo msgPushPlanInfo) { return m26435a(new Request<>(Constants.SET_MSG_PUSH_PLAN, new Wrapper(Module.MSG_PUSH_PLAN, Section.MSG_PUSH_PLAN, msgPushPlanInfo))); } /* renamed from: p */ public Request<MultipleRequest> mo37461p() { return m26435a(new Request<>(Constants.GET_MSG_PUSH_CONFIG, new Wrapper(Module.MSG_PUSH, Section.NAME, Collections.singletonList(Section.MSG_PUSH_INFO.getValue())))); } /* renamed from: q */ public Request<MultipleRequest> mo37462q() { return m26435a(new Request<>(Constants.GET_MSG_PUSH_PLAN, new Wrapper(Module.MSG_PUSH_PLAN, Section.NAME, Collections.singletonList(Section.MSG_PUSH_PLAN.getValue())))); } /* renamed from: r */ public Request<MultipleRequest> mo37463r() { Wrapper wrapper = new Wrapper(Module.MOTION_DETECTION, Section.NAME, Collections.singletonList(Section.MOTION_DET.getValue())); Wrapper wrapper2 = new Wrapper(Module.MOTION_DETECTION, Section.TABLE, Collections.singletonList(Section.REGION_INFO.getValue())); return m26441b(new Request<>(Constants.GET_DETECTION_CONFIG, new Wrappers(Arrays.asList(wrapper, wrapper2)))); } /* renamed from: a */ public Request<MultipleRequest> mo37405a(CloudTerraceMoveInfo cloudTerraceMoveInfo) { return m26435a(new Request<>(Constants.MOTOR_MOVE, new Wrapper(Module.MOTOR, Section.MOVE, cloudTerraceMoveInfo))); } /* renamed from: c */ public Request<MultipleRequest> mo37440c(String str) { return m26435a(new Request<>(Constants.SIGNAL_MOVE, new Wrapper(Module.MOTOR, Section.MOVE_STEP, new CloudTerraceMoveStepInfo(str)))); } /* renamed from: a */ public Request<MultipleRequest> mo37427a(boolean z) { return m26435a(new Request<>(Constants.CRUISE_MOVE, new Wrapper(Module.MOTOR, Section.CRUISE, new CloudTerraceCruiseInfo(z ? "y" : "x")))); } /* renamed from: s */ public Request<MultipleRequest> mo37464s() { return m26435a(new Request<>(Constants.CRUISE_STOP, new Wrapper(Module.MOTOR, Section.CRUISE_STOP, Section.EMPTY.getValue()))); } /* renamed from: t */ public Request<MultipleRequest> mo37465t() { return m26435a(new Request<>(Constants.MANUAL_CALIBRATE, new Wrapper(Module.MOTOR, Section.MANUAL_CALI, Section.EMPTY.getValue()))); } /* renamed from: u */ public Request<MultipleRequest> mo37466u() { return m26435a(new Request<>(Constants.GET_PRESET_CONFIG, new Wrapper(Module.PRESET, Section.NAME, new String[]{Section.PRESET.getValue()}))); } /* renamed from: a */ public Request<MultipleRequest> mo37395a(int i) { return m26435a(new Request<>(Constants.MOTOR_MOVE_TO_PRESET, new Wrapper(Module.PRESET, Section.GOTO_PRESET, new CloudTerraceId(String.valueOf(i))))); } /* renamed from: a */ public Request<MultipleRequest> mo37406a(CloudTerracePoint cloudTerracePoint) { return m26435a(new Request<>(Constants.ADD_MOTOR_POSITION, new Wrapper(Module.PRESET, Section.SET_PRESET, cloudTerracePoint))); } /* renamed from: a */ public Request<MultipleRequest> mo37407a(CloudTerraceResetInfo cloudTerraceResetInfo) { return m26435a(new Request<>(Constants.DELETE_PRESET, new Wrapper(Module.PRESET, Section.REMOVE_PRESET, cloudTerraceResetInfo))); } /* renamed from: c */ public Request<MultipleRequest> mo37441c(String str, String str2) { return m26435a(new Request<>(Constants.CHANGE_THIRD_ACCOUNT, new Wrapper(Module.USER_MANAGEMENT, Section.CHANGE_THIRD_ACCOUNT, new AccountInfo(str, str2)))); } /* renamed from: d */ public Request<MultipleRequest> mo37445d(String str, String str2) { return m26435a(new Request<>(Constants.VERIFY_THIRD_ACCOUNT, new Wrapper(Module.USER_MANAGEMENT, Section.VERIFY_THIRD_ACCOUNT, new AccountInfo(str, str2)))); } /* renamed from: b */ public Request<MultipleRequest> mo37438b(boolean z) { return m26435a(new Request<>(Constants.SET_ROTATION_STATUS, new Wrapper(Module.IMAGE, Section.IMAGE_SWITCH, new ImageFlip(z)))); } /* renamed from: v */ public Request<MultipleRequest> mo37467v() { return m26435a(new Request<>(Constants.GET_INTRUSION_DETECTION_CONFIG, new Wrapper(Module.INTRUSION_DETECTION, Section.NAME, Arrays.asList(Section.DETECTION.getValue(), Section.ARMING_SCHEDULE.getValue())))); } /* renamed from: w */ public Request<MultipleRequest> mo37468w() { return m26435a(new Request<>(Constants.GET_INTRUSION_DETECTION_REGION, new Wrapper(Module.INTRUSION_DETECTION, Section.TABLE, Collections.singletonList(Section.REGION_INFO.getValue())))); } /* renamed from: a */ public Request<MultipleRequest> mo37408a(DetectionInfo detectionInfo) { return m26435a(new Request<>(Constants.SET_INTRUSION_DETECTION_CONFIG, new Wrapper(Module.INTRUSION_DETECTION, Section.DETECTION, detectionInfo))); } /* renamed from: a */ public Request<MultipleRequest> mo37403a(ArmScheduleInfo armScheduleInfo) { return m26435a(new Request<>(Constants.SET_INTRUSION_DETECTION_SCHEDULE, new Wrapper(Module.INTRUSION_DETECTION, Section.ARMING_SCHEDULE, armScheduleInfo))); } /* renamed from: a */ public Request<MultipleRequest> mo37426a(Map<String, List<IntrusionDetectionRegion>> map) { return m26435a(new Request<>(Constants.ADD_INTRUSION_DETECTION_REGION, new Wrapper(Module.INTRUSION_DETECTION, Section.ADD_REGIONS, map))); } /* renamed from: x */ public Request<MultipleRequest> mo37469x() { return m26435a(new Request<>(Constants.GET_LINE_CROSSING_DETECTION_CONFIG, new Wrapper(Module.LINE_CROSSING_DETECTION, Section.NAME, Arrays.asList(Section.DETECTION.getValue(), Section.ARMING_SCHEDULE.getValue())))); } /* renamed from: b */ public Request<MultipleRequest> mo37432b(DetectionInfo detectionInfo) { return m26435a(new Request<>(Constants.SET_LINE_CROSSING_DETECTION_CONFIG, new Wrapper(Module.LINE_CROSSING_DETECTION, Section.DETECTION, detectionInfo))); } /* renamed from: b */ public Request<MultipleRequest> mo37431b(ArmScheduleInfo armScheduleInfo) { return m26435a(new Request<>(Constants.SET_LINE_CROSSING_DETECTION_SCHEDULE, new Wrapper(Module.LINE_CROSSING_DETECTION, Section.ARMING_SCHEDULE, armScheduleInfo))); } /* renamed from: y */ public Request<MultipleRequest> mo37470y() { return m26435a(new Request<>(Constants.GET_LINE_CROSSING_DETECTION_REGION, new Wrapper(Module.LINE_CROSSING_DETECTION, Section.TABLE, Collections.singletonList(Section.REGION_INFO.getValue())))); } /* renamed from: b */ public Request<MultipleRequest> mo37437b(Map<String, List<LineCrossingDetectionRegion>> map) { return m26435a(new Request<>(Constants.ADD_LINE_CROSSING_DETECTION_REGION, new Wrapper(Module.LINE_CROSSING_DETECTION, Section.ADD_REGIONS, map))); } /* renamed from: a */ public Request<MultipleRequest> mo37417a(ResolutionType resolutionType) { return m26435a(new Request<>(Constants.SET_RESOLUTION, new Wrapper(Module.VIDEO, Section.SET_RESOLUTION, new Resolution(resolutionType)))); } /* renamed from: z */ public Request<MultipleRequest> mo37471z() { return m26435a(new Request<>(Constants.GET_CONNECTION_TYPE, new Wrapper(Module.NETWORK, Section.GET_NETWORK_INFO, Section.EMPTY.getValue()))); } /* renamed from: b */ public Request<MultipleRequest> mo37436b(List<MotionDetectRegion> list) { return m26435a(new Request<>(Constants.ADD_DETECTION_REGION, Model.wrapper(list, Module.MOTION_DETECTION, Section.MOTION_DETECTION_ADD_REGION, "region_info"))); } /* renamed from: A */ public Request<MultipleRequest> mo37373A() { return m26435a(new Request<>(Constants.GET_LIGHT_FREQUENCY_INFO, new Wrapper(Module.IMAGE, Section.NAME, Section.COMMON.getValue()))); } /* renamed from: d */ public Request<MultipleRequest> mo37444d(String str) { return m26435a(new Request<>(Constants.SET_LIGHT_FREQUENCY_INFO, new Wrapper(Module.IMAGE, Section.COMMON, new Light(str, null)))); } /* renamed from: B */ public Request<MultipleRequest> mo37374B() { return m26435a(new Request<>(Constants.FORMAT_SD_CARD, new Wrapper(Module.HARD_DISK_MANAGE, Section.HARD_DISK_FORMAT, "1"))); } /* renamed from: C */ public Request<MultipleRequest> mo37375C() { return m26435a(new Request<>(Constants.GET_SD_CARD_FORMAT_STATUS, new Wrapper(Module.HARD_DISK_MANAGE, Section.HARD_DISK_FORMAT_STATUS, DiskInfo.getSingletonDisk()))); } /* renamed from: a */ public Request<MultipleRequest> mo37414a(NightMode nightMode) { return m26435a(new Request<>(Constants.SET_DAY_NIGHT_MODE_CONFIG, new Wrapper(Module.IMAGE, Section.COMMON, new Light(null, nightMode.getRaw())))); } /* renamed from: D */ public Request<MultipleRequest> mo37376D() { return m26435a(new Request<>(Constants.START_FIRMWARE_UPGRADE, new Wrapper(Module.CLOUD_CONFIG, Section.FIRMWARE_DOWNLOAD, Section.EMPTY.getValue()))); } /* renamed from: E */ public Request<MultipleRequest> mo37377E() { return m26435a(new Request<>(Constants.GET_FIRMWARE_UPDATE_STATUS, new Wrapper(Module.CLOUD_CONFIG, Section.NAME, Section.UPGRADE_STATUS.getValue()))); } /* renamed from: F */ public Request<MultipleRequest> mo37378F() { return m26435a(new Request<>(Constants.STOP_MOVE, new Wrapper(Module.MOTOR, Section.STOP, Section.EMPTY.getValue()))); } /* renamed from: G */ public Request<MultipleRequest> mo37379G() { return m26435a(new Request<>(Constants.GET_AUDIO_CONFIG, new Wrapper(Module.AUDIO_CONFIG, Section.NAME, new String[]{Section.SPEAKER.getValue(), Section.MICROPHONE.getValue()}))); } /* renamed from: a */ public Request<MultipleRequest> mo37418a(SpeakerInfo speakerInfo) { return m26435a(new Request<>(Constants.SET_SPEAKER_VOLUME, new Wrapper(Module.AUDIO_CONFIG, Section.SPEAKER, speakerInfo))); } /* renamed from: a */ public Request<MultipleRequest> mo37410a(MicroPhoneInfo microPhoneInfo) { return m26435a(new Request<>(Constants.SET_MICROPHONE_VOLUME, new Wrapper(Module.AUDIO_CONFIG, Section.MICROPHONE, microPhoneInfo))); } /* renamed from: c */ public Request<MultipleRequest> mo37442c(boolean z) { return m26435a(new Request<>(Constants.SET_RECORD_AUDIO, new Wrapper(Module.AUDIO_CONFIG, Section.RECORD_AUDIO, new RecordAudioInfo(z ? "on" : "off")))); } /* renamed from: H */ public Request<MultipleRequest> mo37380H() { return m26435a(new Request<>(Constants.GET_AUDIO_CONFIG, new Wrapper(Module.AUDIO_CONFIG, Section.NAME, new String[]{Section.RECORD_AUDIO.getValue()}))); } /* renamed from: d */ public Request<MultipleRequest> mo37446d(boolean z) { return m26435a(new Request<>(Constants.SET_CIRCULAR_RECORDING_CONFIG, new Wrapper(Module.HARD_DISK_MANAGE, Section.HARD_DISK_LOOP, new HardDiskLoop(z ? "on" : "off")))); } /* renamed from: e */ public Request<Wrapper> mo37448e(String str) { return new Request<>(Constants.SET_LANGUAGE, new Wrapper(Module.LANGUAGE, Section.EMPTY, str)); } /* renamed from: I */ public Request<MultipleRequest> mo37381I() { return m26435a(new Request<>(Constants.GET_CLOCK_STATUS, new Wrapper(Module.SYSTEM, Section.NAME, Section.CLOCK_STATUS.getValue()))); } /* renamed from: J */ public Request<MultipleRequest> mo37382J() { Wrapper wrapper = new Wrapper(Module.DEVICE_INFO, Section.NAME, Collections.singletonList(Section.BASIC_INFO.getValue())); Wrapper wrapper2 = new Wrapper(Module.SYSTEM, Section.NAME, Collections.singletonList(Section.LAST_ALARM_INFO.getValue())); return m26441b(new Request<>(Constants.GET_DEVICE_INFO, new Wrappers(Arrays.asList(wrapper, wrapper2)))); } /* renamed from: K */ public Request<MultipleRequest> mo37383K() { return m26435a(new Request<>(Constants.GET_APP_COMPONENT_LIST, new Wrapper(Module.APP_COMPONENT, Section.NAME, Section.APP_COMPONENT_LIST.getValue()))); } /* renamed from: L */ public Request<MultipleRequest> mo37384L() { Wrapper wrapper = new Wrapper(Module.DEVICE_INFO, Section.NAME, Collections.singletonList(Section.BASIC_INFO.getValue())); Wrapper wrapper2 = new Wrapper(Module.SYSTEM, Section.NAME, Collections.singletonList(Section.LAST_ALARM_INFO.getValue())); Wrapper wrapper3 = new Wrapper(Module.APP_COMPONENT, Section.NAME, Collections.singletonList(Section.APP_COMPONENT_LIST.getValue())); return m26441b(new Request<>(Constants.GET_DEVICE_INFO, new Wrappers(Arrays.asList(wrapper, wrapper2, wrapper3)))); } /* renamed from: M */ public Request<MultipleRequest> mo37385M() { return m26435a(new Request<>(Constants.GET_LDC, new Wrapper(Module.IMAGE, Section.NAME, Section.SWITCH.getValue()))); } /* renamed from: e */ public Request<MultipleRequest> mo37449e(boolean z) { return m26435a(new Request<>(Constants.SET_LDC, new Wrapper(Module.IMAGE, Section.SWITCH, new ImageFlip(z ? "on" : "off")))); } /* renamed from: N */ public Request<MultipleRequest> mo37386N() { return m26435a(new Request<>(Constants.CHECK_DIAGNOSE_STATUS, new Wrapper(Module.SYSTEM, Section.CHECK_DIAGNOSE_STATUS, ""))); } /* renamed from: O */ public Request<MultipleRequest> mo37387O() { return m26435a(new Request<>(Constants.GET_DIAGNOSE_MODE, new Wrapper(Module.SYSTEM, Section.NAME, Section.SYS.getValue()))); } /* renamed from: f */ public Request<MultipleRequest> mo37451f(boolean z) { SystemInfo systemInfo = new SystemInfo(); systemInfo.setDiagnoseMode(z ? "on" : "off"); return m26435a(new Request<>(Constants.SET_DIAGNOSE_MODE, new Wrapper(Module.SYSTEM, Section.SYS, systemInfo))); } /* renamed from: P */ public Request<MultipleRequest> mo37388P() { return m26435a(new Request<>(Constants.GET_P2P_SHARE_PWD, new Wrapper(Module.USER_MANAGEMENT, Section.GET_P2P_SHARE_PWD, Collections.emptyMap()))); } /* renamed from: Q */ public Request<MultipleRequest> mo37389Q() { return m26435a(new Request<>(Constants.GET_AES_ENCRYPT_KEY, new Wrapper(Module.CERT, Section.GET_AES_KEY, Collections.emptyMap()))); } /* renamed from: a */ private <T> Wrappers m26437a(Wrapper<T> wrapper) { return new Wrappers(Collections.singletonList(wrapper)); } /* renamed from: a */ private <T> Request<Wrappers> m26434a(Constants method, Module module, Section section, T t) { return new Request<>(method, m26437a(new Wrapper<>(module, section, t))); } /* renamed from: b */ private Request<Wrappers> m26440b(MotionDetectConfig motionDetectConfig) { return m26434a(Constants.SET_DETECTION_CONFIG, Module.MOTION_DETECTION, Section.MOTION_DET, motionDetectConfig); } /* renamed from: c */ private Request<Wrappers> m26442c(List<MotionDetectRegion> list) { return new Request<>(Constants.ADD_DETECTION_REGION, m26437a(Model.wrapper(list, Module.MOTION_DETECTION, Section.MOTION_DETECTION_ADD_REGION, "region_info"))); } /* renamed from: b */ private Request<Wrappers> m26438b(AlarmInfo alarmInfo) { return m26434a(Constants.SET_ALERT_CONFIG, Module.MSG_ALARM, Section.ALERT_INFO, alarmInfo); } /* renamed from: b */ private Request<Wrappers> m26439b(AlarmPlanInfo alarmPlanInfo) { return m26434a(Constants.SET_ALERT_PLAN, Module.MSG_ALARM_PLAN, Section.MSG_ALARM_PLAN, alarmPlanInfo); } /* renamed from: S */ public Request<Wrappers> mo37391S() { return m26434a(Constants.GET_CLOUD_CONFIG, Module.CLOUD_CONFIG, Section.NAME, Collections.singletonList(Section.UPGRADE_INFO.getValue())); } /* renamed from: T */ public Request<Wrappers> mo37392T() { return m26434a(Constants.CHECK_FIRMWARE_VERSION_BY_CLOUD, Module.CLOUD_CONFIG, Section.FIRMWARE_NOTIFY, Section.EMPTY.getValue()); } /* renamed from: U */ public Request<MultipleRequest> mo37393U() { return m26435a(new Request<>(Constants.GET_TAMPER_DETECTION_CONFIG, new Wrapper(Module.TAMPER_DETECTION, Section.NAME, Collections.singletonList(Section.TAMPER_DET.getValue())))); } /* renamed from: a */ public Request<MultipleRequest> mo37419a(TamperDetectConfig tamperDetectConfig) { return m26435a(new Request<>(Constants.SET_TAMPER_DETECTION_CONFIG, new Wrapper(Module.TAMPER_DETECTION, Section.TAMPER_DET, tamperDetectConfig))); } /* renamed from: a */ public List<Request<Wrappers>> mo37429a(MotionDetectConfig motionDetectConfig, AlarmInfo alarmInfo, MsgPushInfo msgPushInfo, DetectionInfo detectionInfo, DetectionInfo detectionInfo2, TamperDetectConfig tamperDetectConfig) { ArrayList arrayList = new ArrayList(); if (motionDetectConfig != null) { arrayList.add(m26440b(motionDetectConfig)); } if (alarmInfo != null) { arrayList.add(m26438b(alarmInfo)); } if (msgPushInfo != null) { arrayList.add(m26434a(Constants.SET_MSG_PUSH_CONFIG, Module.MSG_PUSH, Section.MSG_PUSH_INFO, msgPushInfo)); } if (detectionInfo != null) { arrayList.add(m26434a(Constants.SET_INTRUSION_DETECTION_CONFIG, Module.INTRUSION_DETECTION, Section.DETECTION, detectionInfo)); } if (detectionInfo2 != null) { arrayList.add(m26434a(Constants.SET_LINE_CROSSING_DETECTION_CONFIG, Module.LINE_CROSSING_DETECTION, Section.DETECTION, detectionInfo2)); } if (tamperDetectConfig != null) { arrayList.add(m26434a(Constants.SET_TAMPER_DETECTION_CONFIG, Module.TAMPER_DETECTION, Section.TAMPER_DET, tamperDetectConfig)); } return arrayList; } /* renamed from: a */ public Request<MultipleRequest> mo37402a(AlarmPlanInfo alarmPlanInfo, MsgPushPlanInfo msgPushPlanInfo, ArmScheduleInfo armScheduleInfo, ArmScheduleInfo armScheduleInfo2) { ArrayList arrayList = new ArrayList(); if (alarmPlanInfo != null) { arrayList.add(m26439b(alarmPlanInfo)); } if (msgPushPlanInfo != null) { arrayList.add(m26434a(Constants.SET_MSG_PUSH_PLAN, Module.MSG_PUSH_PLAN, Section.MSG_PUSH_PLAN, msgPushPlanInfo)); } if (armScheduleInfo != null) { arrayList.add(m26434a(Constants.SET_INTRUSION_DETECTION_SCHEDULE, Module.INTRUSION_DETECTION, Section.ARMING_SCHEDULE, armScheduleInfo)); } if (armScheduleInfo2 != null) { arrayList.add(m26434a(Constants.SET_LINE_CROSSING_DETECTION_SCHEDULE, Module.LINE_CROSSING_DETECTION, Section.ARMING_SCHEDULE, armScheduleInfo2)); } return mo37424a(arrayList); } /* renamed from: a */ public Request<MultipleRequest> mo37425a(List<MotionDetectRegion> list, Map<String, List<IntrusionDetectionRegion>> map, HashMap<String, List<LineCrossingDetectionRegion>> hashMap) { ArrayList arrayList = new ArrayList(); if (list != null) { arrayList.add(m26442c(list)); } if (map != null) { arrayList.add(m26434a(Constants.ADD_INTRUSION_DETECTION_REGION, Module.INTRUSION_DETECTION, Section.ADD_REGIONS, map)); } if (hashMap != null) { arrayList.add(m26434a(Constants.ADD_LINE_CROSSING_DETECTION_REGION, Module.LINE_CROSSING_DETECTION, Section.ADD_REGIONS, hashMap)); } return mo37424a(arrayList); } } ``` ### POJOs that need field extraction ```json [ "BasicInfo", "DetailInfo", "SystemInfo", "Timezone", "VodUserId", "WifiList", "ConnectResult", "ConnectStatus", "ComponentBean", "LedStatus", "OsdElement", "OsdElement", "OsdElement", "OsdFont", "HardDiskLoop", "HardDiskInfo", "DefaultAp", "AlarmInfo", "AlarmPlanInfo", "MsgPushInfo", "MsgPushPlanInfo", "MediaEncrypt", "StreamService", "BindStatus", "BindStatus", "LensMaskInfo", "FirmwareUpdateStatus", "YearlyPlaybackItem", "DailyPlaybackItem", "Light", "ImageFlip", "RebootInfo", "Wan", "RecordPlanInfo", "NewFirmware", "MotionDetectConfig", "MotionDetectRegion", "CloudTerraceMoveInfo", "CloudTerracePoint", "CloudTerraceResetInfo", "AccountInfo", "VideoQuality", "VideoQuality", "Resolution", "VideoCapability", "VideoCapability", "String", "MarkedPositionListInfo", "FirmwareUpdateInfo", "MicroPhoneInfo", "SpeakerInfo", "RecordAudioInfo", "ClockStatus", "LatestFirmwareInfo", "LastAlarmInfo", "String", "CameraComponent", "TamperDetectConfig", "DetectionInfo", "ArmScheduleInfo", "IntrusionDetectionRegion", "DetectionInfo", "ArmScheduleInfo", "LineCrossingDetectionRegion" ] ``` ### Extracted fields ```json { "AccountInfo": { "secname": "String", "passwd": "String", "old_passwd": "String", "ciphertext": "String", "username": "String" }, "AlarmInfo": { "alarm_type": "String", "enabled": "String", "light_type": "String", "alarm_mode": "List<String>" }, "AlarmPlanInfo": { "enabled": "String", "alarm_plan_1": "String" }, "ArmScheduleInfo": { "friday": "String", "monday": "String", "saturday": "String", "sunday": "String", "thursday": "String", "tuesday": "String", "wednesday": "String" }, "BasicInfo": { "barcode": "String", "device_alias": "String", "dev_id": "String", "features": "String", "ffs": "boolean", "hw_desc": "String", "hw_version": "String", "device_info": "String", "mac": "String", "device_model": "String", "device_name": "String", "oem_id": "String", "sw_version": "String", "device_type": "String" }, "BindStatus": { "err_code": "String", "owner": "String", "action_status": "String" }, "CameraComponent": { "app_component_list": "ArrayList<ComponentBean>" }, "ClockStatus": { "local_time": "String", "seconds_from_1970": "long" }, "CloudTerraceMoveInfo": { "x_coord": "String", "y_coord": "String" }, "CloudTerracePoint": { "name": "String", "save_ptz": "String" }, "CloudTerraceResetInfo": { "id": "String[]" }, "ComponentBean": { "name": "String", "version": "int" }, "ConnectResult": { "connect_time": "Integer", "mac": "String", "support_ap": "String" }, "ConnectStatus": { "status": "int" }, "DailyPlaybackItem": { "endTime": "long", "startTime": "long", "vedio_type": "String" }, "DefaultAp": { "ssid": "String", "status": "String" }, "DetailInfo": { "device_info": "String", "domain_name": "String", "device_model": "String", "device_name": "String", "device_type": "String" }, "DetectionInfo": { "enabled": "String" }, "FirmwareUpdateInfo": { "connect_status": "int", "disconnect_reason": "int", "fw_download_progress": "int", "fw_download_status": "int", ".name": "String", "reconnect_time": "int", ".type": "String", "fw_verify_status": "int" }, "FirmwareUpdateStatus": { "lastUpgradingSuccess": "boolean", "state": "String" }, "HardDiskInfo": { "detect_status": "String", "msg_push_free_space": "String", "picture_free_space": "String", "free_space": "String", "video_free_space": "String", "percent": "Float", "record_duration": "String", "record_free_duration": "String", "record_start_time": "String", "status": "String", "msg_push_total_space": "String", "picture_total_space": "String", "total_space": "String", "video_total_space": "String", "type": "String" }, "HardDiskLoop": { "loop": "String" }, "ImageFlip": { "flip_type": "String", "ldc": "String", "rotate_type": "String", "schedule_end_time": "Integer", "schedule_start_time": "Integer", "switch_mode": "String" }, "IntrusionDetectionRegion": { "pt3_x": "String", "pt3_y": "String", "pt1_x": "String", "pt1_y": "String", "percentage": "String", "pt4_x": "String", "pt4_y": "String", "pt2_x": "String", "pt2_y": "String", "sensitivity": "String", "threshold": "String" }, "LastAlarmInfo": { "last_alarm_time": "String", "last_alarm_type": "String" }, "LatestFirmwareInfo": { "location": "String", "release_date": "String", "release_log": "String", "type": "String", "version": "String" }, "LedStatus": { "enabled": "String" }, "LensMaskInfo": { "enabled": "String" }, "Light": { "inf_type": "String", "light_freq_mode": "String" }, "LineCrossingDetectionRegion": { "direction": "String", "pt1_x": "String", "pt1_y": "String", "pt2_x": "String", "pt2_y": "String", "sensitivity": "String" }, "MarkedPositionListInfo": { "id": "Integer[]", "name": "String[]", "position_pan": "double[]", "position_tilt": "double[]", "read_only": "int[]" }, "MediaEncrypt": { "enabled": "String" }, "MicroPhoneInfo": { "bitrate": "String", "channels": "String", "encode_type": "String", "sampling_rate": "String", "volume": "String" }, "MotionDetectConfig": { "digital_sensitivity": "String", "enabled": "String", "sensitivity": "String" }, "MotionDetectRegion": { "height": "String", "width": "String", "x_coor": "String", "y_coor": "String" }, "MsgPushInfo": { "notification_enabled": "String", "rich_notification_enabled": "String" }, "MsgPushPlanInfo": { "enabled": "String", "push_plan_1": "String" }, "NewFirmware": { "fw_new_notify": "String", "fw_update_type": "String", "not_show": "String" }, "OsdElement": { "enabled": "String", "text": "String", "x_coor": "String", "y_coor": "String" }, "OsdFont": { "color": "String", "color_type": "String", "display": "String", "size": "String" }, "RebootInfo": { "day": "String", "enabled": "String", "now": "String", "random_range": "Integer", "time": "String" }, "RecordAudioInfo": { "enabled": "String" }, "RecordPlanInfo": { "enabled": "String", "friday": "String", "monday": "String", "saturday": "String", "sunday": "String", "thursday": "String", "tuesday": "String", "wednesday": "String" }, "Resolution": { "resolution": "String", "secname": "String" }, "SpeakerInfo": { "volume": "String" }, "StreamService": { "port": "Integer" }, "SystemInfo": { "dev_alias": "String", "append_dns": "String", "diagnose_mode": "String", "hostname": "String", "is_factory": "String", "makeroom_status": "String", "alias": "String", "network_type": "String" }, "TamperDetectConfig": { "digital_sensitivity": "String", "enabled": "String", "sensitivity": "String" }, "Timezone": { "timing_mode": "String", "offset": "String", "timezone": "String", "zone_id": "String" }, "VideoCapability": { "bitrate_types": "List<String>", "bitrates": "List<String>", "encode_types": "List<String>", "frame_rates": "List<String>", "qualitys": "List<String>", "resolutions": "List<String>" }, "VideoQuality": { "bitRate": "String", "bitrate_type": "String", "frame_rate": "String", "quality": "String", "resolution": "String", "stream_type": "String" }, "VodUserId": { "user_id": "int" }, "Wan": { "ipaddr": "String" }, "WifiList": { "ap_list": "List<Wifi>" }, "YearlyPlaybackItem": { "date": "String" } } ``` #### Code used for extraction ```python import os, re, json pojos = [] # List from above pojos = list(set(pojos)) pojos.sort() pojo_fields = {} serialized = None for pojo in pojos: with open(pojo + ".java") as f: pojo_fields[pojo] = {} for line in f.readlines(): line = line.strip() if line.startswith("import"): continue if "SerializedName" in line: try: serialized = re.search(r'SerializedName[(].+ = (.+)[)]', line).group(1).replace('"', '') except: print(f"Line doesn't match regex: '{line}'") raise continue if line.startswith("private") and line.endswith(";"): type_, name = line.split(" ")[-2:] if serialized: name = serialized serialized = None name = name.replace(";", "") pojo_fields[pojo][name] = type_ print(json.dumps(pojo_fields, indent=4)) ```