syntax = "proto3";
option go_package = "github.com/antitbone/dwarfctl/proto;pb";

// source: astro
message ReqStartCalibration {
  double lon = 1;
  double lat = 2;
}

// source: astro
message ReqStopCalibration {
}

// source: astro
message ReqGotoDSO {
  double ra = 1;
  double dec = 2;
  string target_name = 3;
  bool goto_only = 4;
}

// source: astro
message ReqGotoSolarSystem {
  int32 index = 1;
  double lon = 2;
  double lat = 3;
  string target_name = 4;
  bool force_start = 5;
}

// source: astro
message ResGotoSolarSystem {
  int32 code = 1;
  ReqGotoSolarSystem req = 2;
}

// source: astro
message ReqStopGoto {
}

// source: astro
message ReqCaptureRawLiveStacking {
  int32 ir_index = 1;
  bool force_start = 2;
}

// source: astro
message ReqStopCaptureRawLiveStacking {
}

// source: astro
message ReqFastStopCaptureRawLiveStacking {
}

// source: astro
message ReqCheckDarkFrame {
}

// source: astro
message ResCheckDarkFrame {
  int32 progress = 1;
  int32 code = 2;
}

// source: astro
message ReqCaptureDarkFrame {
  int32 reshoot = 1;
}

// source: astro
message ReqStopCaptureDarkFrame {
}

// source: astro
message ReqCaptureDarkFrameWithParam {
  int32 exp_index = 1;
  int32 gain_index = 2;
  int32 bin_index = 3;
  int32 cap_size = 4;
}

// source: astro
message ReqStopCaptureDarkFrameWithParam {
}

// source: astro
message ReqGetDarkFrameList {
}

// source: astro
message ResGetDarkFrameInfo {
  // oneof _temperature
  int32 exp_index = 1;
  int32 gain_index = 2;
  int32 bin_index = 3;
  string exp_name = 4;
  string gain_name = 5;
  string bin_name = 6;
  int32 temperature = 7;
}

// source: astro
message ResGetDarkFrameInfoList {
  int32 code = 1;
  repeated ResGetDarkFrameInfo results = 2;
}

// source: astro
message ReqDelDarkFrame {
  int32 exp_index = 1;
  int32 gain_index = 2;
  int32 bin_index = 3;
  int32 temp_value = 4;
}

// source: astro
message ReqDelDarkFrameList {
  repeated ReqDelDarkFrame dark_list = 1;
}

// source: astro
message ResDelDarkFrameList {
  int32 code = 1;
}

// source: astro
message ReqGoLive {
}

// source: astro
message ReqTrackSpecialTarget {
  int32 index = 1;
  double lon = 2;
  double lat = 3;
}

// source: astro
message ReqStopTrackSpecialTarget {
}

// source: astro
message ReqOneClickGotoDSO {
  double ra = 1;
  double dec = 2;
  string target_name = 3;
  double lon = 4;
  double lat = 5;
  int32 shooting_mode = 6;
  bool goto_only = 7;
}

// source: astro
message ResOneClickGoto {
  int32 step = 1;
  int32 code = 2;
  bool all_end = 3;
}

// source: astro
message ReqOneClickGotoSolarSystem {
  int32 index = 1;
  double lon = 2;
  double lat = 3;
  string target_name = 4;
  int32 shooting_mode = 5;
  bool force_start = 6;
}

// source: astro
message ResOneClickGotoSolarSystem {
  int32 step = 1;
  int32 code = 2;
  bool all_end = 3;
  ReqOneClickGotoSolarSystem req = 4;
}

// source: astro
message ReqStopOneClickGoto {
}

// source: astro
message ReqCaptureWideRawLiveStacking {
  bool force_start = 1;
}

// source: astro
message ReqStopCaptureWideRawLiveStacking {
}

// source: astro
message ReqFastStopCaptureWideRawLiveStacking {
}

// source: astro
message ReqStartEqSolving {
  double lon = 1;
  double lat = 2;
}

// source: astro
message ResStartEqSolving {
  double azi_err = 1;
  double alt_err = 2;
  int32 code = 3;
}

// source: astro
message ReqStopEqSolving {
}

// source: astro
message ReqStartAiEnhance {
}

// source: astro
message ReqStopAiEnhance {
}

// source: astro
message ReqStartMosaic {
  int32 horizontal_scale = 1;
  int32 vertical_scale = 2;
  int32 rotation = 3;
  int32 ir_index = 4;
  bool force_start = 5;
}

// source: astro
message ReqStartMakeFitsThumb {
  string src_dir = 1;
}

// source: astro
message ReqStopMakeFitsThumb {
}

// source: astro
message ResMakeFitsThumb {
  int32 code = 1;
  string src_dir = 2;
}

// source: astro
message MakeFitsThumbTaskParam {
  string src_dir = 1;
}

// source: astro
message ReqIsImageStackable {
  repeated string src_dirs = 1;
}

// source: astro
message ResIsImageStackable {
  int32 code = 1;
  repeated ResGetDarkFrameInfo need_dark_frame_info = 2;
}

// source: astro
message ReqStartRepostprocess {
  repeated string src_dirs = 1;
}

// source: astro
message ReqStopRepostprocess {
}

// source: astro
message ResRepostprocess {
  int32 code = 1;
  string result_dir = 2;
}

// source: astro
message RepostprocessTaskParam {
  string result_dir = 1;
}

// source: astro
message ReqGetAstroShootingTime {
  int32 exp_index = 1;
  int32 horizontal_scale = 2;
  int32 vertical_scale = 3;
  int32 rotation = 4;
  int32 cam_id = 5;
  int32 shooting_mode = 6;
}

// source: astro
message ResGetAstroShootingTime {
  enum AstroMode {
    NORMAL = 0;
    MOSAIC = 1;
  }
  int32 code = 1;
  int32 shooting_time = 2;
  int32 cam_id = 3;
  ResGetAstroShootingTime.AstroMode astro_mode = 4;
  int32 shooting_mode = 5;
}

// source: astro
message ReqGetCaliFrameList {
  int32 camera_type = 1;
  int32 cali_frame_type = 2;
}

// source: astro
message CaliFrameInfo {
  // oneof _filter_type
  // oneof _info_id
  // oneof _temp_value
  string exp_name = 1;
  int32 gain = 2;
  int32 resolution = 3;
  int32 camera_type = 4;
  int32 progress = 5;
  int32 cali_frame_type = 6;
  int32 filter_type = 7;
  int32 info_id = 8;
  int32 temp_value = 9;
}

// source: astro
message ResGetCaliFrameList {
  int32 code = 1;
  repeated CaliFrameInfo list = 2;
  int32 camera_type = 3;
  int32 cali_frame_type = 4;
}

// source: astro
message ReqDelCaliFrameList {
  repeated int32 info_ids = 1;
}

// source: astro
message ReqCaptureCaliFrame {
  // oneof _filter_type
  int32 exp_index = 1;
  int32 gain = 2;
  int32 resolution = 3;
  int32 cap_size = 4;
  int32 camera_type = 5;
  int32 cali_frame_type = 6;
  int32 filter_type = 7;
  int32 scene_type = 8;
}

// source: astro
message ReqStopCaptureCaliFrame {
  int32 camera_type = 1;
}

// source: astro
message CaptureCaliFrameTaskParam {
  int32 camera_type = 1;
  int32 cali_frame_type = 2;
}

// source: astro
message ReqGetQuickSetList {
  int32 camera_type = 1;
}

// source: astro
message QuikSetInfo {
  string exp_name = 1;
  int32 exp_index = 2;
  int32 gain = 3;
  int32 resolution = 4;
  int32 camera_type = 5;
  string info_id = 6;
}

// source: astro
message ResGetQuikSetList {
  int32 code = 1;
  repeated QuikSetInfo quick_set_list = 2;
  int32 camera_type = 3;
}

// source: astro
message ReqSetQuickSet {
  string info_id = 1;
}

// source: astro
message ResSetQuickSet {
  int32 code = 1;
  string info_id = 2;
}

// source: astro
message ReqOneClickShooting {
}

// source: astro
message ResAstroShooting {
  // oneof _exp_name
  // oneof _gain
  // oneof _resolution
  // oneof _filter_type
  // oneof _temp_threshold
  int32 code = 1;
  string exp_name = 2;
  int32 gain = 3;
  int32 resolution = 4;
  int32 filter_type = 5;
  int32 temp_threshold = 6;
}

// source: astro
message ReqStartSkyTargetFinder {
  double lon = 1;
  double lat = 2;
  bool force_restart = 3;
  int32 scene_type = 4;
}

// source: astro
message ResStartSkyTargetFinder {
  int32 code = 1;
  double zenith_azi = 2;
  double zenith_alt = 3;
  double center_azi = 4;
  double center_alt = 5;
  double center_roll = 6;
  int32 scene_type = 7;
}

// source: astro
message ReqStopSkyTargetFinder {
}

// source: base
enum WsMajorVersion {
  WS_MAJOR_VERSION_UNKNOWN = 0;
  WS_MAJOR_VERSION_NUMBER = 2;
}

// source: base
enum WsMinorVersion {
  WS_MINOR_VERSION_UNKNOWN = 0;
  WS_MINOR_VERSION_NUMBER = 3;
}

// source: base
message WsPacket {
  uint32 major_version = 1;
  uint32 minor_version = 2;
  uint32 device_id = 3;
  uint32 module_id = 4;
  uint32 cmd = 5;
  uint32 type = 6;
  bytes data = 7;
  string client_id = 8;
}

// source: base
message ComResponse {
  int32 code = 1;
}

// source: base
message ComResWithInt {
  int32 value = 1;
  int32 code = 2;
}

// source: base
message ComResWithDouble {
  double value = 1;
  int32 code = 2;
}

// source: base
message ComResWithString {
  string str = 1;
  int32 code = 2;
}

// source: base
message CommonParam {
  bool hasAuto = 1;
  int32 auto_mode = 2;
  int32 id = 3;
  int32 mode_index = 4;
  int32 index = 5;
  double continue_value = 6;
}

// source: ble
enum VocalType {
  VT_UNKNOWN = 0;
  VT_PING = 1;
  VT_ECHO = 2;
}

// source: ble
message ReqGetconfig {
  int32 cmd = 1;
  string ble_psd = 2;
  string client_id = 3;
}

// source: ble
message ReqAp {
  int32 cmd = 1;
  int32 wifi_type = 2;
  int32 auto_start = 3;
  int32 country_list = 4;
  string country = 5;
  string ble_psd = 6;
  string client_id = 7;
  bool force_restart = 8;
}

// source: ble
message ReqSta {
  int32 cmd = 1;
  int32 auto_start = 2;
  string ble_psd = 3;
  string ssid = 4;
  string psd = 5;
  string client_id = 6;
}

// source: ble
message ReqSetblewifi {
  int32 cmd = 1;
  int32 mode = 2;
  string ble_psd = 3;
  string value = 4;
  string client_id = 5;
}

// source: ble
message ReqReset {
  int32 cmd = 1;
  string client_id = 2;
}

// source: ble
message ReqGetwifilist {
  int32 cmd = 1;
  string client_id = 2;
}

// source: ble
message ReqGetsysteminfo {
  int32 cmd = 1;
  string client_id = 2;
}

// source: ble
message ReqCheckFile {
  int32 cmd = 1;
  string file_path = 2;
  string md5 = 3;
}

// source: ble
message ResCommon {
  int32 cmd = 1;
  int32 code = 2;
}

// source: ble
message ResGetconfig {
  int32 cmd = 1;
  int32 code = 2;
  int32 state = 3;
  int32 wifi_mode = 4;
  int32 ap_mode = 5;
  int32 auto_start = 6;
  int32 ap_country_list = 7;
  string ssid = 8;
  string psd = 9;
  string ip = 10;
  string ap_country = 11;
}

// source: ble
message ResAp {
  int32 cmd = 1;
  int32 code = 2;
  int32 mode = 3;
  string ssid = 4;
  string psd = 5;
}

// source: ble
message ResSta {
  int32 cmd = 1;
  int32 code = 2;
  string ssid = 3;
  string psd = 4;
  string ip = 5;
}

// source: ble
message ResSetblewifi {
  int32 cmd = 1;
  int32 code = 2;
  int32 mode = 3;
  string value = 4;
}

// source: ble
message ResReset {
  int32 cmd = 1;
  int32 code = 2;
}

// source: ble
message WifiInfo {
  int32 signal_level = 1;
  string ssid = 2;
  string security_capability = 3;
}

// source: ble
message ResWifilist {
  int32 cmd = 1;
  int32 code = 2;
  repeated string ssid = 4;
  repeated WifiInfo wifi_info_list = 5;
}

// source: ble
message ResGetsysteminfo {
  int32 cmd = 1;
  int32 code = 2;
  int32 protocol_version = 3;
  string device = 4;
  string mac_address = 5;
  string dwarf_ota_version = 6;
}

// source: ble
message ResReceiveDataError {
  int32 cmd = 1;
  int32 code = 2;
}

// source: ble
message ResCheckFile {
  int32 cmd = 1;
  int32 code = 2;
}

// source: ble
message ComDwarfMsg {
  VocalType vocaltype = 1;
}

// source: ble
message DwarfPing {
  VocalType vocaltype = 1;
  uint64 timestamp = 2;
  bytes magic = 3;
  repeated bytes vocals = 4;
  repeated bytes mutes = 5;
}

// source: ble
message StationModel {
  uint32 family = 1;
  uint32 revision = 2;
}

// source: ble
message NifAP {
  // oneof _ipv6
  string ifname = 1;
  int32 mode = 2;
  string country_code = 3;
  string ssid = 4;
  string sec = 5;
  string psw = 6;
  bytes ipv4 = 7;
  bytes ipv6 = 8;
}

// source: ble
message NifSTA {
  // oneof _ssid
  // oneof _psw
  // oneof _rssi
  // oneof _ipv4
  // oneof _ipv6
  string ifname = 1;
  string ssid = 2;
  string psw = 3;
  int32 rssi = 4;
  bytes ipv4 = 5;
  bytes ipv6 = 6;
}

// source: ble
message DwarfEcho {
  VocalType vocaltype = 1;
  uint64 timestamp = 2;
  bytes magic = 3;
  uint64 ts_ping = 4;
  bytes mac_address = 5;
  StationModel model = 6;
  string sn = 7;
  string name = 8;
  string psw = 9;
  string fw_version = 10;
  string ws_scheme = 11;
  uint32 session = 12;
  NifAP ap = 13;
  NifSTA sta = 14;
}

// source: camera
message ReqOpenCamera {
  bool binning = 1;
  int32 rtsp_encode_type = 2;
}

// source: camera
message ReqCloseCamera {
}

// source: camera
message ReqPhoto {
}

// source: camera
message ReqBurstPhoto {
  int32 count = 1;
}

// source: camera
message ReqStopBurstPhoto {
}

// source: camera
message ReqStartRecord {
  int32 encode_type = 1;
}

// source: camera
message ReqStopRecord {
}

// source: camera
message ReqSetExpMode {
  int32 mode = 1;
}

// source: camera
message ReqGetExpMode {
}

// source: camera
message ReqSetExp {
  int32 index = 1;
}

// source: camera
message ReqGetExp {
}

// source: camera
message ReqSetGainMode {
  int32 mode = 1;
}

// source: camera
message ReqGetGainMode {
}

// source: camera
message ReqSetGain {
  int32 index = 1;
}

// source: camera
message ReqGetGain {
}

// source: camera
message ReqSetBrightness {
  int32 value = 1;
}

// source: camera
message ReqGetBrightness {
}

// source: camera
message ReqSetContrast {
  int32 value = 1;
}

// source: camera
message ReqGetContrast {
}

// source: camera
message ReqSetHue {
  int32 value = 1;
}

// source: camera
message ReqGetHue {
}

// source: camera
message ReqSetSaturation {
  int32 value = 1;
}

// source: camera
message ReqGetSaturation {
}

// source: camera
message ReqSetSharpness {
  int32 value = 1;
}

// source: camera
message ReqGetSharpness {
}

// source: camera
message ReqSetWBMode {
  int32 mode = 1;
}

// source: camera
message ReqGetWBMode {
}

// source: camera
message ReqSetWBSence {
  int32 value = 1;
}

// source: camera
message ReqGetWBSence {
}

// source: camera
message ReqSetWBCT {
  int32 index = 1;
}

// source: camera
message ReqGetWBCT {
}

// source: camera
message ReqSetIrCut {
  int32 value = 1;
}

// source: camera
message ReqGetIrcut {
}

// source: camera
message ReqStartTimeLapse {
}

// source: camera
message ReqStopTimeLapse {
}

// source: camera
message ReqSetAllParams {
  int32 exp_mode = 1;
  int32 exp_index = 2;
  int32 gain_mode = 3;
  int32 gain_index = 4;
  int32 ircut_value = 5;
  int32 wb_mode = 6;
  int32 wb_index_type = 7;
  int32 wb_index = 8;
  int32 brightness = 9;
  int32 contrast = 10;
  int32 hue = 11;
  int32 saturation = 12;
  int32 sharpness = 13;
  int32 jpg_quality = 14;
}

// source: camera
message ReqGetAllParams {
}

// source: camera
message ResGetAllParams {
  repeated CommonParam all_params = 1;
  int32 code = 2;
}

// source: camera
message ReqSetFeatureParams {
  CommonParam param = 1;
}

// source: camera
message ReqGetAllFeatureParams {
}

// source: camera
message ResGetAllFeatureParams {
  repeated CommonParam all_feature_params = 1;
  int32 code = 2;
}

// source: camera
message ReqGetSystemWorkingState {
}

// source: camera
message ReqSetJpgQuality {
  int32 quality = 1;
}

// source: camera
message ReqGetJpgQuality {
}

// source: camera
message ReqPhotoRaw {
}

// source: camera
message ReqSetRtspBitRateType {
  int32 bitrate_type = 1;
}

// source: camera
message ReqDisableAllIspProcessing {
}

// source: camera
message ReqEnableAllIspProcessing {
}

// source: camera
message IspModuleState {
  int32 module_id = 1;
  bool state = 2;
}

// source: camera
message ReqSetIspModuleState {
  repeated IspModuleState module_states = 1;
}

// source: camera
message ReqGetIspModuleState {
  repeated int32 module_ids = 1;
}

// source: camera
message ReqSwitchResolution {
  int32 resolution_index = 1;
}

// source: camera
message ReqSwitchFrameRate {
  int32 fps_index = 1;
}

// source: camera
message ReqSwitchCropRatio {
  int32 crop_ratio = 1;
}

// source: camera
message ReqSetPreviewQuality {
  uint32 level = 1;
  uint32 quality = 2;
}

// source: device
message ReqLensDefog {
  int32 state = 1;
}

// source: device
message ReqAutoCooling {
  int32 state = 1;
}

// source: device
message ReqAutoShutdown {
  int32 state = 1;
}

// source: focus
message ReqManualSingleStepFocus {
  uint32 direction = 1;
}

// source: focus
message ReqManualContinuFocus {
  uint32 direction = 1;
}

// source: focus
message ReqStopManualContinuFocus {
}

// source: focus
message ReqNormalAutoFocus {
  uint32 mode = 1;
  uint32 center_x = 2;
  uint32 center_y = 3;
}

// source: focus
message ReqAstroAutoFocus {
  uint32 mode = 1;
}

// source: focus
message ReqStopAstroAutoFocus {
}

// source: focus
message ReqGetUserInfinityPos {
}

// source: focus
message ReqSetUserInfinityPos {
  int32 pos = 1;
}

// source: focus
message ResUserInfinityPos {
  int32 code = 1;
  int32 pos = 2;
}

// source: itips
message ReqITipsGet {
  int32 mode = 1;
}

// source: itips
message ResITipsGet {
  int32 mode = 1;
  string itips_code = 2;
  int32 code = 3;
}

// source: itips
message CommonITips {
  int32 itips_status = 1;
  string itips_code = 2;
}

// source: itips
message CommonStepITips {
  int32 step_id = 1;
  int32 step_status = 2;
  repeated CommonITips step_itips = 3;
}

// source: itips
message ResITipsList {
  repeated CommonStepITips itips_list = 1;
  int32 mode = 2;
  int32 code = 3;
}

// source: motor_control
message ReqMotorServiceJoystick {
  double vector_angle = 1;
  double vector_length = 2;
}

// source: motor_control
message ReqMotorServiceJoystickFixedAngle {
  double vector_angle = 1;
  double vector_length = 2;
}

// source: motor_control
message ReqMotorServiceJoystickStop {
}

// source: motor_control
message ReqMotorRun {
  int32 id = 1;
  double speed = 2;
  bool direction = 3;
  int32 speed_ramping = 4;
  int32 resolution_level = 5;
}

// source: motor_control
message ReqMotorRunInPulse {
  int32 id = 1;
  int32 frequency = 2;
  bool direction = 3;
  int32 speed_ramping = 4;
  int32 resolution = 5;
  int32 pulse = 6;
  bool mode = 7;
}

// source: motor_control
message ReqMotorRunTo {
  int32 id = 1;
  double end_position = 2;
  double speed = 3;
  int32 speed_ramping = 4;
  int32 resolution_level = 5;
}

// source: motor_control
message ReqMotorGetPosition {
  int32 id = 1;
}

// source: motor_control
message ReqMotorStop {
  int32 id = 1;
}

// source: motor_control
message ReqMotorReset {
  int32 id = 1;
  bool direction = 2;
}

// source: motor_control
message ReqMotorChangeSpeed {
  int32 id = 1;
  double speed = 2;
}

// source: motor_control
message ReqMotorChangeDirection {
  int32 id = 1;
  bool direction = 2;
}

// source: motor_control
message ResMotor {
  int32 id = 1;
  int32 code = 2;
}

// source: motor_control
message ResMotorPosition {
  int32 id = 1;
  int32 code = 2;
  double position = 3;
}

// source: motor_control
message ReqDualCameraLinkage {
  int32 x = 1;
  int32 y = 2;
}

// source: notify
enum OperationState {
  OPERATION_STATE_IDLE = 0;
  OPERATION_STATE_RUNNING = 1;
  OPERATION_STATE_STOPPING = 2;
  OPERATION_STATE_STOPPED = 3;
}

// source: notify
enum AstroState {
  ASTRO_STATE_IDLE = 0;
  ASTRO_STATE_RUNNING = 1;
  ASTRO_STATE_STOPPING = 2;
  ASTRO_STATE_STOPPED = 3;
  ASTRO_STATE_PLATE_SOLVING = 4;
}

// source: notify
enum SentryModeState {
  SENTRY_MODE_STATE_IDLE = 0;
  SENTRY_MODE_STATE_INIT = 1;
  SENTRY_MODE_STATE_DETECT = 2;
  SENTRY_MODE_STATE_TRACK = 3;
  SENTRY_MODE_STATE_TRACK_FINISH = 4;
  SENTRY_MODE_STATE_STOPPING = 5;
}

// source: notify
enum SentryObjectType {
  SENTRY_OBJECT_TYPE_UNKNOWN = 0;
  SENTRY_OBJECT_TYPE_UFO = 1;
  SENTRY_OBJECT_TYPE_BIRD = 2;
  SENTRY_OBJECT_TYPE_PERSON = 3;
  SENTRY_OBJECT_TYPE_ANIMAL = 4;
  SENTRY_OBJECT_TYPE_VEHICLE = 5;
  SENTRY_OBJECT_TYPE_FLYING = 6;
  SENTRY_OBJECT_TYPE_BOAT = 7;
}

// source: notify
message PictureMatching {
  uint32 x = 1;
  uint32 y = 2;
  uint32 width = 3;
  uint32 height = 4;
}

// source: notify
message StorageInfo {
  uint32 available_size = 1;
  uint32 total_size = 2;
  int32 storage_type = 3;
  bool is_valid = 4;
}

// source: notify
message Temperature {
  int32 code = 1;
  int32 temperature = 2;
}

// source: notify
message CmosTemperature {
  // oneof _temperature
  int32 temperature = 1;
  int32 camera_type = 2;
}

// source: notify
message RecordTime {
  uint32 record_time = 1;
  uint32 camera_type = 2;
}

// source: notify
message TimeLapseOutTime {
  uint32 interval = 1;
  uint32 out_time = 2;
  uint32 total_time = 3;
  uint32 camera_type = 4;
}

// source: notify
message OperationStateNotify {
  OperationState state = 1;
}

// source: notify
message AstroCalibrationState {
  AstroState state = 1;
  int32 plate_solving_times = 2;
}

// source: notify
message AstroGotoState {
  AstroState state = 1;
  string target_name = 2;
}

// source: notify
message AstroTrackingState {
  OperationState state = 1;
  string target_name = 2;
}

// source: notify
message ProgressCaptureRawDark {
  int32 progress = 1;
  int32 remaining_time = 2;
  int32 camera_type = 3;
}

// source: notify
message ProgressCaptureRawLiveStacking {
  // oneof _shooting_time
  // oneof _stacked_time
  int32 total_count = 1;
  int32 update_type = 2;
  int32 current_count = 3;
  int32 stacked_count = 4;
  int32 exp_index = 5;
  int32 gain_index = 6;
  string target_name = 7;
  int32 camera_type = 8;
  int32 shooting_time = 9;
  int32 stacked_time = 10;
}

// source: notify
message Param {
  repeated CommonParam param = 1;
}

// source: notify
message BurstProgress {
  uint32 total_count = 1;
  uint32 completed_count = 2;
  uint32 camera_type = 3;
}

// source: notify
message PanoramaProgress {
  int32 total_count = 1;
  int32 completed_count = 2;
  uint32 camera_type = 3;
}

// source: notify
message RgbState {
  int32 state = 1;
}

// source: notify
message PowerIndState {
  int32 state = 1;
}

// source: notify
message ChargingState {
  int32 state = 1;
}

// source: notify
message BatteryInfo {
  int32 percentage = 1;
}

// source: notify
message HostSlaveMode {
  int32 mode = 1;
  bool lock = 2;
}

// source: notify
message MTPState {
  int32 mode = 1;
}

// source: notify
message TrackResult {
  int32 x = 1;
  int32 y = 2;
  int32 w = 3;
  int32 h = 4;
  int32 id = 5;
}

// source: notify
message CPUMode {
  int32 mode = 1;
}

// source: notify
message AstroTrackingSpecialState {
  OperationState state = 1;
  string target_name = 2;
  int32 index = 3;
}

// source: notify
message PowerOff {
}

// source: notify
message AlbumUpdate {
  int32 media_type = 1;
}

// source: notify
message SentryState {
  SentryModeState state = 1;
  SentryObjectType object_type = 2;
}

// source: notify
message OneClickGotoState {
  // oneof current_state
  AstroAutoFocusState astro_auto_focus_state = 1;
  AstroCalibrationState astro_calibration_state = 2;
  AstroGotoState astro_goto_state = 3;
  AstroTrackingState astro_tracking_state = 4;
}

// source: notify
message StreamType {
  int32 stream_type = 1;
  int32 cam_id = 2;
}

// source: notify
message MultiTrackResult {
  repeated TrackResult results = 1;
}

// source: notify
message EqSolvingState {
  OperationState state = 1;
}

// source: notify
message LongExpPhotoProgress {
  double total_time = 1;
  double exposured_time = 2;
  uint32 camera_type = 3;
}

// source: notify
message ShootingScheduleResultAndState {
  string schedule_id = 1;
  int32 result = 2;
  int32 state = 3;
}

// source: notify
message ShootingTaskState {
  string schedule_task_id = 1;
  int32 state = 2;
  int32 code = 3;
}

// source: notify
message SkySeacherState {
  OperationState state = 1;
}

// source: notify
message ProgressAiEnhance {
  int32 progress = 1;
  int32 total_time = 2;
}

// source: notify
message CommonProgress {
  enum ProgressType {
    PROGRESS_TYPE_INITING = 0;
    PROGRESS_TYPE_MOSAIC_MOVING = 1;
  }
  int32 current = 1;
  int32 total = 2;
  CommonProgress.ProgressType progress_type = 3;
}

// source: notify
message CalibrationResult {
  double azi = 1;
  double alt = 2;
}

// source: notify
message FocusPosition {
  int32 pos = 1;
}

// source: notify
message SentryAutoHand {
  int32 mode = 1;
}

// source: notify
message PanoramaStitchUploadComplete {
  int32 code = 1;
  string user_id = 2;
  string busi_no = 3;
  string panorama_name = 4;
  string mac = 5;
}

// source: notify
message PanoramaCompressionComplete {
  int32 code = 1;
  string panorama_name = 2;
  string zip_file_path = 3;
  string zip_file_md5 = 4;
  uint64 zip_file_size = 5;
  string stitch_param = 6;
}

// source: notify
message PanoramaCompressionProgress {
  string panorama_name = 1;
  uint32 total_files_num = 2;
  uint32 compressed_files_num = 3;
}

// source: notify
message PanoramaUploadCompressionProgress {
  string user_id = 1;
  string busi_no = 2;
  string panorama_name = 3;
  string mac = 4;
  uint32 total_files_num = 5;
  uint32 compressed_files_num = 6;
  double speed = 7;
}

// source: notify
message PanoramaUploadProgress {
  string user_id = 1;
  string busi_no = 2;
  string panorama_name = 3;
  string mac = 4;
  uint64 total_size = 5;
  uint64 uploaded_size = 6;
  double speed = 7;
}

// source: notify
message PanoramaCurrentUploadState {
  int32 code = 1;
  string user_id = 2;
  string busi_no = 3;
  string panorama_name = 4;
  string mac = 5;
  uint32 total_files_num = 6;
  uint32 compressed_files_num = 7;
  uint64 total_size = 8;
  uint64 uploaded_size = 9;
  uint32 step = 10;
}

// source: notify
message LowTempProtectionMode {
  int32 mode = 1;
}

// source: notify
message StateSystemResourceOccupation {
  enum TaskId {
    IDLE = 0;
    PANORAMA_UPLOAD = 1;
    ASTRO_MULTI_STACK = 2;
  }
  StateSystemResourceOccupation.TaskId task_id = 1;
  OperationState state = 2;
}

// source: notify
message BodyStatus {
  enum BodyStatusEnum {
    UNKNOWN = 0;
    EQ_MODE = 1;
    AZI_MODE = 2;
  }
  BodyStatus.BodyStatusEnum body_status = 1;
}

// source: notify
message ProgressCaptureMosaic {
  int32 total_count = 1;
  int32 update_type = 2;
  int32 current_count = 3;
  int32 stacked_count = 4;
  int32 exp_index = 5;
  int32 gain_index = 6;
  string target_name = 7;
  int32 horizontal_scale = 8;
  int32 vertical_scale = 9;
  int32 rotation = 10;
  int32 fov_id = 11;
  int32 fov_total = 12;
}

// source: notify
message Wb {
  uint64 mode = 1;
  int32 ct = 2;
  int32 scene = 3;
  int32 camera_type = 4;
}

// source: notify
message GeneralIntParam {
  uint64 param_id = 1;
  int32 mode = 2;
  int32 value = 3;
}

// source: notify
message GeneralFloatParam {
  uint64 param_id = 1;
  float value = 2;
}

// source: notify
message GeneralBoolParams {
  uint64 param_id = 1;
  bool value = 2;
}

// source: notify
message SwitchShootingMode {
  int32 state = 1;
  int32 source_mode = 2;
  int32 dst_mode = 3;
}

// source: notify
message SwitchCropRatioState {
  int32 state = 1;
  int32 crop_ratio = 2;
}

// source: notify
message ResolutionParam {
  uint64 param_id = 1;
  int32 current_res_value = 2;
  int32 current_fps_value = 3;
  repeated int32 supported_fps_list = 4;
  repeated int32 supported_resolution_list = 5;
}

// source: notify
message CaptureRawState {
  OperationState state = 1;
  int32 camera_type = 2;
}

// source: notify
message PhotoState {
  OperationState state = 1;
  int32 camera_type = 2;
}

// source: notify
message BurstState {
  OperationState state = 1;
  int32 camera_type = 2;
}

// source: notify
message RecordState {
  OperationState state = 1;
  int32 camera_type = 2;
}

// source: notify
message TimeLapseState {
  OperationState state = 1;
  int32 camera_type = 2;
}

// source: notify
message CaptureRawDarkState {
  OperationState state = 1;
  int32 camera_type = 2;
}

// source: notify
message PanoramaState {
  OperationState state = 1;
  int32 camera_type = 2;
}

// source: notify
message AstroAutoFocusState {
  OperationState state = 1;
}

// source: notify
message NormalAutoFocusState {
  OperationState state = 1;
}

// source: notify
message AstroAutoFocusFastState {
  OperationState state = 1;
}

// source: notify
message AreaAutoFocusState {
  OperationState state = 1;
}

// source: notify
message DualCameraLinkageState {
  OperationState state = 1;
}

// source: notify
message NormalTrackState {
  OperationState state = 1;
  int32 camera_type = 2;
}

// source: notify
message SwitchResolutionFpsState {
  OperationState state = 1;
  int32 camera_type = 2;
}

// source: notify
message CaptureCaliFrameState {
  OperationState state = 1;
  int32 camera_type = 2;
  int32 cali_frame_type = 3;
}

// source: notify
message CaptureCaliFrameProgress {
  int32 progress = 1;
  int32 camera_type = 2;
  int32 cali_frame_type = 3;
}

// source: notify
message DeviceAttitude {
  double pitch = 1;
  double yaw = 2;
  double roll = 3;
}

// source: notify
message SkyTargetFinderState {
  OperationState state = 1;
  int32 scene_type = 2;
}

// source: notify
message PanoFramingThumbnailUpdateNotify {
  bytes webp_data = 1;
}

// source: notify
message PanoFramingRectUpdateNotify {
  double norm_x_tl = 1;
  double norm_y_tl = 2;
  double norm_x_br = 3;
  double norm_y_br = 4;
  double norm_limit_x_left = 5;
  double norm_limit_y_top = 6;
  double norm_limit_x_right = 7;
  double norm_limit_y_bottom = 8;
  double rect_hor_fov = 9;
  double rect_ver_fov = 10;
  int32 error_code = 11;
}

// source: notify
message PanoFramingStateNotify {
  int32 state = 1;
}

// source: notify
message AutoShutdown {
  int32 state = 1;
}

// source: notify
message LensDefog {
  int32 state = 1;
}

// source: notify
message AutoCooling {
  int32 state = 1;
}

// source: panorama
message ReqStartPanoramaByGrid {
}

// source: panorama
message ReqStartPanoramaByEulerRange {
  float yaw_range = 1;
  float pitch_range = 2;
}

// source: panorama
message ReqStartPanoramaStitchUpload {
  uint64 resource_id = 1;
  string user_id = 2;
  int32 app_platform = 3;
  string panorama_name = 4;
  string ak = 5;
  string sk = 6;
  string token = 7;
  string bucket = 8;
  string bucket_prefix = 9;
  string from = 10;
  string env_type = 11;
}

// source: panorama
message ReqStopPanorama {
}

// source: panorama
message ReqStopPanoramaStitchUpload {
  string user_id = 1;
}

// source: panorama
message ReqGetPanoramaCurrentUploadState {
}

// source: panorama
message ResGetPanoramaCurrentUploadState {
  int32 code = 1;
  string user_id = 2;
  string busi_no = 3;
  string panorama_name = 4;
  string mac = 5;
  uint32 total_files_num = 6;
  uint32 compressed_files_num = 7;
  uint64 total_size = 8;
  uint64 uploaded_size = 9;
  uint32 step = 10;
}

// source: panorama
message ReqGetUploadPredict {
  string panorama_name = 1;
}

// source: panorama
message ResGetUploadPredict {
  int32 code = 1;
  string panorama_name = 2;
  uint32 file_nums = 3;
  string resolution = 4;
  uint64 cloud_data_size = 5;
  uint64 zip_data_size = 6;
  uint64 app_zip_data_size = 7;
}

// source: panorama
message PanoramaUploadParam {
  string user_id = 1;
  string busi_no = 2;
  string panorama_name = 3;
  string mac = 4;
  uint32 total_files_num = 5;
  uint32 compressed_files_num = 6;
  uint64 total_size = 7;
  uint64 uploaded_size = 8;
  uint32 step = 9;
}

// source: panorama
message ReqCompressPanorama {
  string panorama_name = 1;
}

// source: panorama
message ReqStopCompressPanorama {
}

// source: panorama
message ReqStartPanoramaFraming {
}

// source: panorama
message ReqResetPanoramaFraming {
}

// source: panorama
message ReqStopPanoramaFraming {
}

// source: panorama
message ReqStopPanoramaFramingAndStartGrid {
}

// source: panorama
message ResStopPanoramaFraming {
  int32 code = 1;
  double centerX_degree_offset = 2;
  double centerY_degree_offset = 3;
  uint32 framing_rows = 4;
  uint32 framing_cols = 5;
}

// source: panorama
message ReqUpdatePanoramaFramingRect {
  double norm_x_tl = 1;
  double norm_y_tl = 2;
  double norm_x_br = 3;
  double norm_y_br = 4;
}

// source: param
message ReqSetExposure {
  uint64 param_id = 1;
  int32 mode = 2;
  int32 value = 3;
}

// source: param
message ParamReqSetGain {
  uint64 param_id = 1;
  int32 mode = 2;
  int32 value = 3;
}

// source: param
message ReqSetWb {
  uint64 param_id = 1;
  int32 mode = 2;
  int32 value = 3;
}

// source: param
message ReqSetGeneralIntParam {
  uint64 param_id = 1;
  int32 value = 2;
}

// source: param
message ReqSetGeneralFloatParam {
  uint64 param_id = 1;
  float value = 2;
}

// source: param
message ReqSetGeneralBoolParams {
  uint64 param_id = 1;
  bool value = 2;
}

// source: param
message ReqSetAutoParam {
  int32 camera_type = 1;
  int32 shooting_tech = 2;
  bool is_auto = 3;
}

// source: param
message ResSetAutoParam {
  int32 shooting_mode = 1;
  int32 camera_type = 2;
  int32 shooting_tech = 3;
  bool is_auto = 4;
  bool update_all = 5;
  int32 code = 6;
}

// source: rgb
message ReqOpenRgb {
}

// source: rgb
message ReqCloseRgb {
}

// source: rgb
message ReqPowerDown {
}

// source: rgb
message ReqOpenPowerInd {
}

// source: rgb
message ReqClosePowerInd {
}

// source: rgb
message ReqReboot {
}

// source: schedule
enum ShootingScheduleState {
  SHOOTING_SCHEDULE_STATE_INITIALIZED = 0;
  SHOOTING_SCHEDULE_STATE_PENDING_SHOOT = 1;
  SHOOTING_SCHEDULE_STATE_SHOOTING = 2;
  SHOOTING_SCHEDULE_STATE_COMPLETED = 3;
  SHOOTING_SCHEDULE_STATE_EXPIRED = 4;
}

// source: schedule
enum ShootingScheduleSyncState {
  SHOOTING_SCHEDULE_SYNC_STATE_PENDING_SYNC = 0;
  SHOOTING_SCHEDULE_SYNC_STATE_SYNCED = 1;
}

// source: schedule
enum ShootingScheduleResult {
  SHOOTING_SCHEDULE_RESULT_PENDING_START = 0;
  SHOOTING_SCHEDULE_RESULT_ALL_COMPLETED = 1;
  SHOOTING_SCHEDULE_RESULT_PARTIALLY_COMPLETED = 2;
  SHOOTING_SCHEDULE_RESULT_ALL_FAILED = 3;
}

// source: schedule
enum ScheduleShootingTaskState {
  SHOOTING_TASK_STATUS_IDLE = 0;
  SHOOTING_TASK_STATUS_SHOOTING = 1;
  SHOOTING_TASK_STATUS_SUCCESS = 2;
  SHOOTING_TASK_STATUS_FAILED = 3;
  SHOOTING_TASK_STATUS_INTERRUPTED = 4;
}

// source: schedule
enum ShootingScheduleMode {
  SHOOTING_SCHEDULE_MODE_ASTRO_DEEP_SKY = 0;
}

// source: schedule
message ShootingTaskMsg {
  string schedule_id = 1;
  string params = 2;
  ShootingTaskState state = 3;
  int32 code = 4;
  int64 created_time = 5;
  int64 updated_time = 6;
  string schedule_task_id = 7;
  int32 param_mode = 8;
  int32 param_version = 9;
  int32 create_from = 10;
}

// source: schedule
message ShootingScheduleMsg {
  string schedule_id = 1;
  string schedule_name = 2;
  int32 device_id = 3;
  string mac_address = 4;
  int64 start_time = 5;
  int64 end_time = 6;
  ShootingScheduleResult result = 7;
  int64 created_time = 8;
  int64 updated_time = 9;
  ShootingScheduleState state = 10;
  int32 lock = 11;
  string password = 12;
  repeated ShootingTaskMsg shooting_tasks = 13;
  int32 param_mode = 14;
  int32 param_version = 15;
  string params = 16;
  int64 schedule_time = 17;
  ShootingScheduleSyncState sync_state = 18;
}

// source: schedule
message ReqSyncShootingSchedule {
  ShootingScheduleMsg shooting_schedule = 1;
}

// source: schedule
message ResSyncShootingSchedule {
  ShootingScheduleMsg shooting_schedule = 1;
  repeated string time_conflict_schedule_ids = 2;
  int32 code = 3;
  bool can_replace = 4;
}

// source: schedule
message ReqCancelShootingSchedule {
  string id = 1;
  string password = 2;
}

// source: schedule
message ResCancelShootingSchedule {
  string id = 1;
  int32 code = 2;
}

// source: schedule
message ReqGetAllShootingSchedule {
}

// source: schedule
message ResGetAllShootingSchedule {
  repeated ShootingScheduleMsg shooting_schedule = 1;
  int32 code = 2;
}

// source: schedule
message ReqGetShootingScheduleById {
  string id = 1;
}

// source: schedule
message ResGetShootingScheduleById {
  ShootingScheduleMsg shooting_schedule = 1;
  int32 code = 2;
}

// source: schedule
message ReqGetShootingTaskById {
  string id = 1;
}

// source: schedule
message ResGetShootingTaskById {
  ShootingTaskMsg shooting_task = 1;
  int32 code = 2;
}

// source: schedule
message ReqReplaceShootingSchedule {
  ShootingScheduleMsg shooting_schedule = 1;
}

// source: schedule
message ResReplaceShootingSchedule {
  ShootingScheduleMsg shooting_schedule = 1;
  repeated ShootingScheduleMsg replaced_shooting_schedule = 2;
  int32 code = 3;
}

// source: schedule
message ReqUnlockShootingSchedule {
  string id = 1;
  string password = 2;
}

// source: schedule
message ResUnlockShootingSchedule {
  string id = 1;
  int32 code = 2;
}

// source: schedule
message ReqLockShootingSchedule {
  string id = 1;
  string password = 2;
}

// source: schedule
message ResLockShootingSchedule {
  string id = 1;
  string password = 2;
  int32 code = 3;
}

// source: schedule
message ReqDeleteShootingSchedule {
  string id = 1;
  string password = 2;
}

// source: schedule
message ResDeleteShootingSchedule {
  string id = 1;
  int32 code = 2;
}

// source: system
message ReqSetTime {
  uint64 timestamp = 1;
  double timezone_offset = 2;
}

// source: system
message ReqSetTimezone {
  string timezone = 1;
}

// source: system
message ReqSetMtpMode {
  int32 mode = 1;
}

// source: system
message ReqSetCpuMode {
  int32 mode = 1;
}

// source: system
message ReqsetMasterLock {
  bool lock = 1;
}

// source: system
message ReqGetDeviceActivateInfo {
  int32 issuer = 1;
}

// source: system
message ResDeviceActivateInfo {
  int32 activate_state = 1;
  int32 activate_process_state = 2;
  string request_param = 3;
}

// source: system
message ReqDeviceActivateWriteFile {
  string request_param = 1;
}

// source: system
message ResDeviceActivateWriteFile {
  int32 code = 1;
  string request_param = 2;
}

// source: system
message ReqDeviceActivateSuccessfull {
  string request_param = 1;
}

// source: system
message ResDeviceActivateSuccessfull {
  int32 code = 1;
  int32 activate_state = 2;
}

// source: system
message ReqDisableDeviceActivate {
  string request_param = 1;
}

// source: system
message ResDisableDeviceActivate {
  int32 code = 1;
  int32 activate_state = 2;
}

// source: system
message ReqSetLocation {
  double latitude = 1;
  double longitude = 2;
  double altitude = 3;
  string country_region = 4;
  string province = 5;
  string city = 6;
  string district = 7;
  bool enable = 8;
}

// source: task_center
enum TaskId {
  TASK_ID_IDLE = 0;
  TASK_ID_PANORAMA_UPLOAD = 1;
  TASK_ID_ASTRO_MULTI_STACK_THUMBNAIL_GENERATION = 2;
  TASK_ID_ASTRO_MULTI_STACK = 3;
  TASK_ID_CAPTURE_CALI_FRAME = 4;
}

// source: task_center
enum ExclusiveTaskType {
  EXCLUSIVE_TYPE_NONE = 0;
  EXCLUSIVE_TYPE_CAMERA = 1;
  EXCLUSIVE_TYPE_MOTOR = 2;
  EXCLUSIVE_TYPE_FOCUS_MOTOR = 4;
  EXCLUSIVE_TYPE_SYSTEM_IO = 8;
  EXCLUSIVE_TYPE_SYSTEM_WIFI = 16;
}

// source: task_center
message TaskAttr {
  int32 exclusive_mask = 1;
  int32 priority = 2;
}

// source: task_center
message TaskState {
  // oneof extendedState
  OperationState base_state = 1;
  AstroState astro_extended_state = 2;
}

// source: task_center
message TaskParam {
  // oneof param
  PanoramaUploadParam panorama_upload = 1;
  MakeFitsThumbTaskParam make_fits_thumb_task_param = 2;
  RepostprocessTaskParam repostprocess_task_param = 3;
  CaptureCaliFrameTaskParam capture_cali_frame_task_param = 4;
}

// source: task_center
message ResNotifyTaskState {
  TaskId task_id = 1;
  TaskAttr task_attr = 2;
  TaskState state = 3;
  TaskParam param = 4;
}

// source: task_center
message ReqStartTask {
  // oneof param
  TaskId task_id = 1;
  ReqStartMakeFitsThumb req_make_fits_thumb_param = 2;
  ReqStartRepostprocess req_repostprocess_param = 3;
}

// source: task_center
message ReqStopTask {
  TaskId task_id = 1;
}

// source: task_center
message ResTaskCenter {
  int32 code = 1;
  TaskId task_id = 2;
}

// source: task_center
message ClientParams {
  int32 encode_type = 1;
}

// source: task_center
message ReqEnterCamera {
  ClientParams client_param = 3;
}

// source: task_center
message ResEnterCamera {
  int32 code = 1;
  int32 shooting_mode_id = 2;
}

// source: task_center
message ReqSwitchShootingMode {
  int32 mode = 1;
}

// source: task_center
message ResSwitchShootingMode {
  int32 code = 1;
  int32 shooting_mode_id = 2;
}

// source: task_center
message ReqSwitchShootingTech {
  int32 tech = 1;
}

// source: task_center
message ResSwitchShootingTech {
  int32 code = 1;
  int32 shooting_tech_id = 2;
}

// source: task_center
message ReqGetDeviceStateInfo {
}

// source: task_center
message ExclusiveCameraState {
  // oneof current_state
  CaptureRawState capture_raw_state = 1;
  PhotoState photo_state = 2;
  BurstState burst_state = 3;
  RecordState record_state = 4;
  TimeLapseState timelapse_state = 5;
  CaptureCaliFrameState capture_cali_frame_state = 6;
  PanoramaState panorama_state = 7;
  SentryState sentry_state = 8;
}

// source: task_center
message TeleCameraStateInfo {
  // oneof _cmos_temperature
  ExclusiveCameraState exclusive_state = 1;
  StreamType stream_type = 2;
  double h_fov = 3;
  double v_fov = 4;
  uint32 resolution_width = 5;
  uint32 resolution_height = 6;
  CmosTemperature cmos_temperature = 7;
}

// source: task_center
message WideCameraStateInfo {
  // oneof _cmos_temperature
  ExclusiveCameraState exclusive_state = 1;
  StreamType stream_type = 2;
  double h_fov = 3;
  double v_fov = 4;
  uint32 resolution_width = 5;
  uint32 resolution_height = 6;
  CmosTemperature cmos_temperature = 7;
}

// source: task_center
message ExclusiveFocusMotorState {
  // oneof current_state
  AstroAutoFocusState astro_auto_focus_state = 1;
  NormalAutoFocusState normal_auto_focus_state = 2;
  AstroAutoFocusFastState astro_auto_focus_fast_state = 3;
  AreaAutoFocusState area_auto_focus_state = 4;
}

// source: task_center
message FocusMotorStateInfo {
  // oneof _focus_position
  ExclusiveFocusMotorState exclusive_state = 1;
  FocusPosition focus_position = 2;
}

// source: task_center
message ExclusiveMotionMotorState {
  // oneof current_state
  AstroCalibrationState astro_calibration_state = 1;
  AstroGotoState astro_goto_state = 2;
  AstroTrackingState astro_tracking_state = 3;
  NormalTrackState normal_track_state = 4;
  OneClickGotoState one_click_goto_state = 5;
  EqSolvingState eq_state = 6;
  SentryState sentry_state = 7;
  SkyTargetFinderState sky_target_finder_state = 8;
}

// source: task_center
message MotionMotorStateInfo {
  ExclusiveMotionMotorState exclusive_state = 1;
  SentryAutoHand sentry_auto_hand = 2;
}

// source: task_center
message DeviceStateInfo {
  RgbState rgb_state = 1;
  PowerIndState power_ind_state = 2;
  ChargingState charging_state = 3;
  StorageInfo storage_info = 4;
  MTPState mtp_state = 5;
  CPUMode cpu_mode = 6;
  Temperature temperature = 7;
  BodyStatus body_status = 8;
  BatteryInfo battery_info = 9;
  CalibrationResult calibration_result = 10;
  PictureMatching picture_matching = 11;
  AutoShutdown auto_shutdown = 12;
  LensDefog lens_defog = 13;
  AutoCooling auto_cooling = 14;
}

// source: task_center
message ConnectionStateInfo {
  HostSlaveMode host_slave_mode = 1;
}

// source: task_center
message ShootingModeAndTech {
  int32 shooting_mode = 1;
  int32 parent_shooting_mode = 2;
  repeated int32 shooting_techs = 3;
}

// source: task_center
message ResGetDeviceStateInfo {
  int32 shooting_mode = 1;
  TeleCameraStateInfo tele_camera_state_info = 2;
  WideCameraStateInfo wide_camera_state_info = 3;
  FocusMotorStateInfo focus_motor_state_info = 4;
  MotionMotorStateInfo motion_motor_state_info = 5;
  DeviceStateInfo device_state_info = 6;
  int32 code = 7;
  ConnectionStateInfo connection_state_info = 8;
  repeated ShootingModeAndTech shooting_mode_and_techs = 9;
}

// source: track
message ReqStartTrack {
  int32 x = 1;
  int32 y = 2;
  int32 w = 3;
  int32 h = 4;
  int32 cam_id = 5;
}

// source: track
message ReqStopTrack {
}

// source: track
message ReqPauseTrack {
}

// source: track
message ReqContinueTrack {
}

// source: track
message ReqStartSentryMode {
  int32 type = 1;
}

// source: track
message ReqStopSentryMode {
}

// source: track
message ReqMOTTrackOne {
  int32 id = 1;
}

// source: track
message ReqUFOAutoHandMode {
  int32 mode = 1;
}

// source: track
message ReqStartTrackClick {
  int32 x = 1;
  int32 y = 2;
  int32 cam_id = 3;
}

// source: voiceassistant
enum VoiceCommandType {
  VOICE_CMD_UNKNOWN = 0;
  VOICE_CMD_GET_STATUS = 1;
  VOICE_CMD_TAKE_PHOTO = 2;
  VOICE_CMD_START_RECORD = 3;
  VOICE_CMD_STOP_RECORD = 4;
  VOICE_CMD_START_TIMELAPSE = 5;
  VOICE_CMD_STOP_TIMELAPSE = 6;
  VOICE_CMD_START_BURST = 7;
  VOICE_CMD_STOP_BURST = 8;
  VOICE_CMD_START_ASTRO = 9;
  VOICE_CMD_STOP_ASTRO = 10;
  VOICE_CMD_START_SENTRY = 11;
  VOICE_CMD_STOP_SENTRY = 12;
  VOICE_CMD_MOVE = 13;
  VOICE_CMD_GOTO_TARGET = 14;
  VOICE_CMD_CALIBRATION = 15;
  VOICE_CMD_AUTO_FOCUS = 16;
  VOICE_CMD_STOP_FOCUS = 17;
  VOICE_CMD_STOP_ALL = 18;
}

// source: voiceassistant
message ReqVoiceCommand {
  // oneof params
  VoiceCommandType command_type = 1;
  int32 shooting_mode = 2;
  VoicePhotoParams photo_params = 10;
  VoiceRecordParams record_params = 11;
  VoiceTimelapseParams timelapse_params = 12;
  VoiceBurstParams burst_params = 13;
  VoiceAstroParams astro_params = 14;
  VoiceSentryParams sentry_params = 15;
  VoiceMoveParams move_params = 16;
  VoiceGotoParams goto_params = 17;
  VoiceCalibrationParams calibration_params = 18;
  VoiceFocusParams focus_params = 19;
}

// source: voiceassistant
message VoicePhotoParams {
  int32 camera_type = 1;
}

// source: voiceassistant
message VoiceRecordParams {
  int32 camera_type = 1;
  int32 duration_seconds = 2;
}

// source: voiceassistant
message VoiceTimelapseParams {
  int32 camera_type = 1;
  int32 interval_seconds = 2;
  int32 duration_seconds = 3;
}

// source: voiceassistant
message VoiceBurstParams {
  int32 camera_type = 1;
  int32 count = 2;
}

// source: voiceassistant
message VoiceAstroParams {
  string target_name = 1;
  double ra = 2;
  double dec = 3;
  int32 index = 4;
  double lon = 5;
  double lat = 6;
  bool auto_goto = 7;
  bool force_start = 8;
}

// source: voiceassistant
message VoiceSentryParams {
  int32 type = 1;
}

// source: voiceassistant
message VoiceMoveParams {
  double azimuth_angle = 1;
  double altitude_angle = 2;
  int32 speed = 3;
}

// source: voiceassistant
message VoiceGotoParams {
  string target_name = 1;
  double ra = 2;
  double dec = 3;
  int32 index = 4;
  double lon = 5;
  double lat = 6;
  int32 shooting_mode = 7;
}

// source: voiceassistant
message VoiceCalibrationParams {
  double lon = 1;
  double lat = 2;
}

// source: voiceassistant
message VoiceFocusParams {
  bool is_infinity = 1;
}

// source: voiceassistant
message ResVoiceCommand {
  // oneof result
  int32 code = 1;
  string message = 2;
  VoiceCommandType command_type = 3;
  VoiceStatusResult status_result = 10;
  VoiceOperationResult operation_result = 11;
}

// source: voiceassistant
message AstroShootingProgress {
  string target_name = 1;
  int32 captured_count = 2;
  int32 total_count = 3;
  int32 stacked_count = 4;
  int32 progress_percentage = 5;
  int64 elapsed_time = 6;
  int64 remaining_time = 7;
}

// source: voiceassistant
message VoiceStatusResult {
  ResGetDeviceStateInfo device_state_info = 1;
  AstroShootingProgress astro_progress = 2;
}

// source: voiceassistant
message VoiceOperationResult {
  bool success = 1;
  string detail_message = 2;
}

// source: voiceassistant
message ResNotifyVoiceAssistant {
  VoiceCommandType command_type = 1;
  OperationState state = 2;
  string message = 4;
}

