OSDN Git Service

Add control commands for Mock Ril
authorXia Wang <xiaw@google.com>
Fri, 8 Oct 2010 07:35:00 +0000 (00:35 -0700)
committerXia Wang <xiaw@google.com>
Sun, 10 Oct 2010 20:46:14 +0000 (13:46 -0700)
- Hangup a call remotely for the given cause.
- Set call transition flag
- set call to alert
- set call to active
- add a dialing call (this is for testing purpose

Add ril request support: RIL_REQUEST_LAST_CALL_FAIL_CAUSE

Change-Id: I56d0a10a7bff31eb11f4f9b64b53acf7931e6cb7

18 files changed:
mock-ril/src/cpp/requests.cpp
mock-ril/src/cpp/responses.cpp
mock-ril/src/generated/cpp/ctrl.pb.cpp
mock-ril/src/generated/cpp/ctrl.pb.h
mock-ril/src/generated/cpp/ril.pb.cpp
mock-ril/src/generated/cpp/ril.pb.h
mock-ril/src/generated/desc/ctrl.desc
mock-ril/src/generated/desc/ril.desc
mock-ril/src/generated/java/com/android/internal/telephony/ril_proto/RilCmds.java
mock-ril/src/generated/java/com/android/internal/telephony/ril_proto/RilCtrlCmds.java
mock-ril/src/generated/python/ctrl_pb2.py
mock-ril/src/generated/python/ril_pb2.py
mock-ril/src/js/ctrl_server.js
mock-ril/src/js/mock_ril.js
mock-ril/src/js/ril_vars.js
mock-ril/src/js/simulated_radio.js
mock-ril/src/proto/ctrl.proto
mock-ril/src/proto/ril.proto

index d88eff8..3e967af 100644 (file)
@@ -415,6 +415,7 @@ int requestsInit(v8::Handle<v8::Context> context, RilRequestWorkerQueue **rwq) {
     rilReqConversionMap[RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND] = ReqWithNoData; // 14
     rilReqConversionMap[RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE] = ReqWithNoData; // 15
     rilReqConversionMap[RIL_REQUEST_CONFERENCE] = ReqWithNoData;  // 16
+    rilReqConversionMap[RIL_REQUEST_LAST_CALL_FAIL_CAUSE] = ReqWithNoData;  // 18
     rilReqConversionMap[RIL_REQUEST_SIGNAL_STRENGTH] = ReqWithNoData; // 19
     rilReqConversionMap[RIL_REQUEST_REGISTRATION_STATE] = ReqWithNoData; // 20
     rilReqConversionMap[RIL_REQUEST_GPRS_REGISTRATION_STATE] = ReqWithNoData; // 21
index b2339f0..af00b89 100644 (file)
@@ -502,6 +502,7 @@ int responsesInit(v8::Handle<v8::Context> context) {
     rilRspConversionMap[RIL_REQUEST_HANGUP_FOREGROUND_RESUME_BACKGROUND] = RspWithNoData; // 14
     rilRspConversionMap[RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE] = RspWithNoData; // 15
     rilRspConversionMap[RIL_REQUEST_CONFERENCE] = RspWithNoData;  // 16
+    rilRspConversionMap[RIL_REQUEST_LAST_CALL_FAIL_CAUSE] = RspIntegers;  // 18
     rilRspConversionMap[RIL_REQUEST_SIGNAL_STRENGTH] = RspSignalStrength; // 19
     rilRspConversionMap[RIL_REQUEST_REGISTRATION_STATE] = RspStrings; // 20
     rilRspConversionMap[RIL_REQUEST_GPRS_REGISTRATION_STATE] = RspStrings; // 21
index 3266b30..e31da9c 100644 (file)
@@ -23,6 +23,15 @@ const ::google::protobuf::internal::GeneratedMessageReflection*
 const ::google::protobuf::Descriptor* CtrlReqSetMTCall_descriptor_ = NULL;
 const ::google::protobuf::internal::GeneratedMessageReflection*
   CtrlReqSetMTCall_reflection_ = NULL;
+const ::google::protobuf::Descriptor* CtrlHangupConnRemote_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  CtrlHangupConnRemote_reflection_ = NULL;
+const ::google::protobuf::Descriptor* CtrlSetCallTransitionFlag_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  CtrlSetCallTransitionFlag_reflection_ = NULL;
+const ::google::protobuf::Descriptor* CtrlReqAddDialingCall_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  CtrlReqAddDialingCall_reflection_ = NULL;
 const ::google::protobuf::EnumDescriptor* CtrlCmd_descriptor_ = NULL;
 const ::google::protobuf::EnumDescriptor* CtrlStatus_descriptor_ = NULL;
 
@@ -80,6 +89,52 @@ void protobuf_AssignDesc_ctrl_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(CtrlReqSetMTCall));
+  CtrlHangupConnRemote_descriptor_ = file->message_type(3);
+  static const int CtrlHangupConnRemote_offsets_[2] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CtrlHangupConnRemote, connection_id_),
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CtrlHangupConnRemote, call_fail_cause_),
+  };
+  CtrlHangupConnRemote_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      CtrlHangupConnRemote_descriptor_,
+      CtrlHangupConnRemote::default_instance_,
+      CtrlHangupConnRemote_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CtrlHangupConnRemote, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CtrlHangupConnRemote, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(CtrlHangupConnRemote));
+  CtrlSetCallTransitionFlag_descriptor_ = file->message_type(4);
+  static const int CtrlSetCallTransitionFlag_offsets_[1] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CtrlSetCallTransitionFlag, flag_),
+  };
+  CtrlSetCallTransitionFlag_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      CtrlSetCallTransitionFlag_descriptor_,
+      CtrlSetCallTransitionFlag::default_instance_,
+      CtrlSetCallTransitionFlag_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CtrlSetCallTransitionFlag, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CtrlSetCallTransitionFlag, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(CtrlSetCallTransitionFlag));
+  CtrlReqAddDialingCall_descriptor_ = file->message_type(5);
+  static const int CtrlReqAddDialingCall_offsets_[1] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CtrlReqAddDialingCall, phone_number_),
+  };
+  CtrlReqAddDialingCall_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      CtrlReqAddDialingCall_descriptor_,
+      CtrlReqAddDialingCall::default_instance_,
+      CtrlReqAddDialingCall_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CtrlReqAddDialingCall, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(CtrlReqAddDialingCall, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(CtrlReqAddDialingCall));
   CtrlCmd_descriptor_ = file->enum_type(0);
   CtrlStatus_descriptor_ = file->enum_type(1);
 }
@@ -100,6 +155,12 @@ void protobuf_RegisterTypes(const ::std::string&) {
     CtrlRspRadioState_descriptor_, &CtrlRspRadioState::default_instance());
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
     CtrlReqSetMTCall_descriptor_, &CtrlReqSetMTCall::default_instance());
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    CtrlHangupConnRemote_descriptor_, &CtrlHangupConnRemote::default_instance());
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    CtrlSetCallTransitionFlag_descriptor_, &CtrlSetCallTransitionFlag::default_instance());
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    CtrlReqAddDialingCall_descriptor_, &CtrlReqAddDialingCall::default_instance());
 }
 
 }  // namespace
@@ -111,6 +172,12 @@ void protobuf_ShutdownFile_ctrl_2eproto() {
   delete CtrlRspRadioState_reflection_;
   delete CtrlReqSetMTCall::default_instance_;
   delete CtrlReqSetMTCall_reflection_;
+  delete CtrlHangupConnRemote::default_instance_;
+  delete CtrlHangupConnRemote_reflection_;
+  delete CtrlSetCallTransitionFlag::default_instance_;
+  delete CtrlSetCallTransitionFlag_reflection_;
+  delete CtrlReqAddDialingCall::default_instance_;
+  delete CtrlReqAddDialingCall_reflection_;
 }
 
 void protobuf_AddDesc_ctrl_2eproto() {
@@ -125,21 +192,35 @@ void protobuf_AddDesc_ctrl_2eproto() {
     "rlReqRadioState\022$\n\005state\030\001 \002(\0162\025.ril_pro"
     "to.RadioState\"9\n\021CtrlRspRadioState\022$\n\005st"
     "ate\030\001 \002(\0162\025.ril_proto.RadioState\"(\n\020Ctrl"
-    "ReqSetMTCall\022\024\n\014phone_number\030\001 \002(\t*s\n\007Ct"
-    "rlCmd\022\021\n\rCTRL_CMD_ECHO\020\000\022\034\n\030CTRL_CMD_GET"
-    "_RADIO_STATE\020\001\022\034\n\030CTRL_CMD_SET_RADIO_STA"
-    "TE\020\002\022\031\n\024CTRL_CMD_SET_MT_CALL\020\351\007*5\n\nCtrlS"
-    "tatus\022\022\n\016CTRL_STATUS_OK\020\000\022\023\n\017CTRL_STATUS"
-    "_ERR\020\001B7\n(com.android.internal.telephony"
-    ".ril_protoB\013RilCtrlCmds", 423);
+    "ReqSetMTCall\022\024\n\014phone_number\030\001 \002(\t\"F\n\024Ct"
+    "rlHangupConnRemote\022\025\n\rconnection_id\030\001 \002("
+    "\005\022\027\n\017call_fail_cause\030\002 \002(\005\")\n\031CtrlSetCal"
+    "lTransitionFlag\022\014\n\004flag\030\001 \002(\010\"-\n\025CtrlReq"
+    "AddDialingCall\022\024\n\014phone_number\030\001 \002(\t*\232\002\n"
+    "\007CtrlCmd\022\021\n\rCTRL_CMD_ECHO\020\000\022\034\n\030CTRL_CMD_"
+    "GET_RADIO_STATE\020\001\022\034\n\030CTRL_CMD_SET_RADIO_"
+    "STATE\020\002\022\031\n\024CTRL_CMD_SET_MT_CALL\020\351\007\022 \n\033CT"
+    "RL_CMD_HANGUP_CONN_REMOTE\020\352\007\022&\n!CTRL_CMD"
+    "_SET_CALL_TRANSITION_FLAG\020\353\007\022\034\n\027CTRL_CMD"
+    "_SET_CALL_ALERT\020\354\007\022\035\n\030CTRL_CMD_SET_CALL_"
+    "ACTIVE\020\355\007\022\036\n\031CTRL_CMD_ADD_DIALING_CALL\020\356"
+    "\007*5\n\nCtrlStatus\022\022\n\016CTRL_STATUS_OK\020\000\022\023\n\017C"
+    "TRL_STATUS_ERR\020\001B7\n(com.android.internal"
+    ".telephony.ril_protoB\013RilCtrlCmds", 753);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "ctrl.proto", &protobuf_RegisterTypes);
   CtrlReqRadioState::default_instance_ = new CtrlReqRadioState();
   CtrlRspRadioState::default_instance_ = new CtrlRspRadioState();
   CtrlReqSetMTCall::default_instance_ = new CtrlReqSetMTCall();
+  CtrlHangupConnRemote::default_instance_ = new CtrlHangupConnRemote();
+  CtrlSetCallTransitionFlag::default_instance_ = new CtrlSetCallTransitionFlag();
+  CtrlReqAddDialingCall::default_instance_ = new CtrlReqAddDialingCall();
   CtrlReqRadioState::default_instance_->InitAsDefaultInstance();
   CtrlRspRadioState::default_instance_->InitAsDefaultInstance();
   CtrlReqSetMTCall::default_instance_->InitAsDefaultInstance();
+  CtrlHangupConnRemote::default_instance_->InitAsDefaultInstance();
+  CtrlSetCallTransitionFlag::default_instance_->InitAsDefaultInstance();
+  CtrlReqAddDialingCall::default_instance_->InitAsDefaultInstance();
   ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_ctrl_2eproto);
 }
 
@@ -160,6 +241,11 @@ bool CtrlCmd_IsValid(int value) {
     case 1:
     case 2:
     case 1001:
+    case 1002:
+    case 1003:
+    case 1004:
+    case 1005:
+    case 1006:
       return true;
     default:
       return false;
@@ -835,6 +921,686 @@ void CtrlReqSetMTCall::Swap(CtrlReqSetMTCall* other) {
 }
 
 
+// ===================================================================
+
+#ifndef _MSC_VER
+const int CtrlHangupConnRemote::kConnectionIdFieldNumber;
+const int CtrlHangupConnRemote::kCallFailCauseFieldNumber;
+#endif  // !_MSC_VER
+
+CtrlHangupConnRemote::CtrlHangupConnRemote()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void CtrlHangupConnRemote::InitAsDefaultInstance() {
+}
+
+CtrlHangupConnRemote::CtrlHangupConnRemote(const CtrlHangupConnRemote& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void CtrlHangupConnRemote::SharedCtor() {
+  _cached_size_ = 0;
+  connection_id_ = 0;
+  call_fail_cause_ = 0;
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+CtrlHangupConnRemote::~CtrlHangupConnRemote() {
+  SharedDtor();
+}
+
+void CtrlHangupConnRemote::SharedDtor() {
+  if (this != default_instance_) {
+  }
+}
+
+void CtrlHangupConnRemote::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* CtrlHangupConnRemote::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return CtrlHangupConnRemote_descriptor_;
+}
+
+const CtrlHangupConnRemote& CtrlHangupConnRemote::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_ctrl_2eproto();  return *default_instance_;
+}
+
+CtrlHangupConnRemote* CtrlHangupConnRemote::default_instance_ = NULL;
+
+CtrlHangupConnRemote* CtrlHangupConnRemote::New() const {
+  return new CtrlHangupConnRemote;
+}
+
+void CtrlHangupConnRemote::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    connection_id_ = 0;
+    call_fail_cause_ = 0;
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool CtrlHangupConnRemote::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // required int32 connection_id = 1;
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &connection_id_)));
+          _set_bit(0);
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectTag(16)) goto parse_call_fail_cause;
+        break;
+      }
+      
+      // required int32 call_fail_cause = 2;
+      case 2: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+         parse_call_fail_cause:
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &call_fail_cause_)));
+          _set_bit(1);
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+      
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void CtrlHangupConnRemote::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // required int32 connection_id = 1;
+  if (_has_bit(0)) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->connection_id(), output);
+  }
+  
+  // required int32 call_fail_cause = 2;
+  if (_has_bit(1)) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(2, this->call_fail_cause(), output);
+  }
+  
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* CtrlHangupConnRemote::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // required int32 connection_id = 1;
+  if (_has_bit(0)) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->connection_id(), target);
+  }
+  
+  // required int32 call_fail_cause = 2;
+  if (_has_bit(1)) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(2, this->call_fail_cause(), target);
+  }
+  
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int CtrlHangupConnRemote::ByteSize() const {
+  int total_size = 0;
+  
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // required int32 connection_id = 1;
+    if (has_connection_id()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->connection_id());
+    }
+    
+    // required int32 call_fail_cause = 2;
+    if (has_call_fail_cause()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->call_fail_cause());
+    }
+    
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void CtrlHangupConnRemote::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const CtrlHangupConnRemote* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const CtrlHangupConnRemote*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void CtrlHangupConnRemote::MergeFrom(const CtrlHangupConnRemote& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from._has_bit(0)) {
+      set_connection_id(from.connection_id());
+    }
+    if (from._has_bit(1)) {
+      set_call_fail_cause(from.call_fail_cause());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void CtrlHangupConnRemote::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CtrlHangupConnRemote::CopyFrom(const CtrlHangupConnRemote& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CtrlHangupConnRemote::IsInitialized() const {
+  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
+  
+  return true;
+}
+
+void CtrlHangupConnRemote::Swap(CtrlHangupConnRemote* other) {
+  if (other != this) {
+    std::swap(connection_id_, other->connection_id_);
+    std::swap(call_fail_cause_, other->call_fail_cause_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata CtrlHangupConnRemote::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = CtrlHangupConnRemote_descriptor_;
+  metadata.reflection = CtrlHangupConnRemote_reflection_;
+  return metadata;
+}
+
+
+// ===================================================================
+
+#ifndef _MSC_VER
+const int CtrlSetCallTransitionFlag::kFlagFieldNumber;
+#endif  // !_MSC_VER
+
+CtrlSetCallTransitionFlag::CtrlSetCallTransitionFlag()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void CtrlSetCallTransitionFlag::InitAsDefaultInstance() {
+}
+
+CtrlSetCallTransitionFlag::CtrlSetCallTransitionFlag(const CtrlSetCallTransitionFlag& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void CtrlSetCallTransitionFlag::SharedCtor() {
+  _cached_size_ = 0;
+  flag_ = false;
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+CtrlSetCallTransitionFlag::~CtrlSetCallTransitionFlag() {
+  SharedDtor();
+}
+
+void CtrlSetCallTransitionFlag::SharedDtor() {
+  if (this != default_instance_) {
+  }
+}
+
+void CtrlSetCallTransitionFlag::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* CtrlSetCallTransitionFlag::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return CtrlSetCallTransitionFlag_descriptor_;
+}
+
+const CtrlSetCallTransitionFlag& CtrlSetCallTransitionFlag::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_ctrl_2eproto();  return *default_instance_;
+}
+
+CtrlSetCallTransitionFlag* CtrlSetCallTransitionFlag::default_instance_ = NULL;
+
+CtrlSetCallTransitionFlag* CtrlSetCallTransitionFlag::New() const {
+  return new CtrlSetCallTransitionFlag;
+}
+
+void CtrlSetCallTransitionFlag::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    flag_ = false;
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool CtrlSetCallTransitionFlag::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // required bool flag = 1;
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
+                 input, &flag_)));
+          _set_bit(0);
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+      
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void CtrlSetCallTransitionFlag::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // required bool flag = 1;
+  if (_has_bit(0)) {
+    ::google::protobuf::internal::WireFormatLite::WriteBool(1, this->flag(), output);
+  }
+  
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* CtrlSetCallTransitionFlag::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // required bool flag = 1;
+  if (_has_bit(0)) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(1, this->flag(), target);
+  }
+  
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int CtrlSetCallTransitionFlag::ByteSize() const {
+  int total_size = 0;
+  
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // required bool flag = 1;
+    if (has_flag()) {
+      total_size += 1 + 1;
+    }
+    
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void CtrlSetCallTransitionFlag::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const CtrlSetCallTransitionFlag* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const CtrlSetCallTransitionFlag*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void CtrlSetCallTransitionFlag::MergeFrom(const CtrlSetCallTransitionFlag& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from._has_bit(0)) {
+      set_flag(from.flag());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void CtrlSetCallTransitionFlag::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CtrlSetCallTransitionFlag::CopyFrom(const CtrlSetCallTransitionFlag& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CtrlSetCallTransitionFlag::IsInitialized() const {
+  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
+  
+  return true;
+}
+
+void CtrlSetCallTransitionFlag::Swap(CtrlSetCallTransitionFlag* other) {
+  if (other != this) {
+    std::swap(flag_, other->flag_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata CtrlSetCallTransitionFlag::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = CtrlSetCallTransitionFlag_descriptor_;
+  metadata.reflection = CtrlSetCallTransitionFlag_reflection_;
+  return metadata;
+}
+
+
+// ===================================================================
+
+const ::std::string CtrlReqAddDialingCall::_default_phone_number_;
+#ifndef _MSC_VER
+const int CtrlReqAddDialingCall::kPhoneNumberFieldNumber;
+#endif  // !_MSC_VER
+
+CtrlReqAddDialingCall::CtrlReqAddDialingCall()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void CtrlReqAddDialingCall::InitAsDefaultInstance() {
+}
+
+CtrlReqAddDialingCall::CtrlReqAddDialingCall(const CtrlReqAddDialingCall& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void CtrlReqAddDialingCall::SharedCtor() {
+  _cached_size_ = 0;
+  phone_number_ = const_cast< ::std::string*>(&_default_phone_number_);
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+CtrlReqAddDialingCall::~CtrlReqAddDialingCall() {
+  SharedDtor();
+}
+
+void CtrlReqAddDialingCall::SharedDtor() {
+  if (phone_number_ != &_default_phone_number_) {
+    delete phone_number_;
+  }
+  if (this != default_instance_) {
+  }
+}
+
+void CtrlReqAddDialingCall::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* CtrlReqAddDialingCall::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return CtrlReqAddDialingCall_descriptor_;
+}
+
+const CtrlReqAddDialingCall& CtrlReqAddDialingCall::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_ctrl_2eproto();  return *default_instance_;
+}
+
+CtrlReqAddDialingCall* CtrlReqAddDialingCall::default_instance_ = NULL;
+
+CtrlReqAddDialingCall* CtrlReqAddDialingCall::New() const {
+  return new CtrlReqAddDialingCall;
+}
+
+void CtrlReqAddDialingCall::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (_has_bit(0)) {
+      if (phone_number_ != &_default_phone_number_) {
+        phone_number_->clear();
+      }
+    }
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool CtrlReqAddDialingCall::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // required string phone_number = 1;
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_phone_number()));
+          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+            this->phone_number().data(), this->phone_number().length(),
+            ::google::protobuf::internal::WireFormat::PARSE);
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+      
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void CtrlReqAddDialingCall::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // required string phone_number = 1;
+  if (_has_bit(0)) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->phone_number().data(), this->phone_number().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    ::google::protobuf::internal::WireFormatLite::WriteString(
+      1, this->phone_number(), output);
+  }
+  
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* CtrlReqAddDialingCall::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // required string phone_number = 1;
+  if (_has_bit(0)) {
+    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
+      this->phone_number().data(), this->phone_number().length(),
+      ::google::protobuf::internal::WireFormat::SERIALIZE);
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->phone_number(), target);
+  }
+  
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int CtrlReqAddDialingCall::ByteSize() const {
+  int total_size = 0;
+  
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // required string phone_number = 1;
+    if (has_phone_number()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::StringSize(
+          this->phone_number());
+    }
+    
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void CtrlReqAddDialingCall::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const CtrlReqAddDialingCall* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const CtrlReqAddDialingCall*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void CtrlReqAddDialingCall::MergeFrom(const CtrlReqAddDialingCall& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from._has_bit(0)) {
+      set_phone_number(from.phone_number());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void CtrlReqAddDialingCall::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void CtrlReqAddDialingCall::CopyFrom(const CtrlReqAddDialingCall& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool CtrlReqAddDialingCall::IsInitialized() const {
+  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
+  
+  return true;
+}
+
+void CtrlReqAddDialingCall::Swap(CtrlReqAddDialingCall* other) {
+  if (other != this) {
+    std::swap(phone_number_, other->phone_number_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata CtrlReqAddDialingCall::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = CtrlReqAddDialingCall_descriptor_;
+  metadata.reflection = CtrlReqAddDialingCall_reflection_;
+  return metadata;
+}
+
+
 // @@protoc_insertion_point(namespace_scope)
 
 }  // namespace ril_proto
index 945add4..6e9f166 100644 (file)
@@ -36,16 +36,24 @@ void protobuf_ShutdownFile_ctrl_2eproto();
 class CtrlReqRadioState;
 class CtrlRspRadioState;
 class CtrlReqSetMTCall;
+class CtrlHangupConnRemote;
+class CtrlSetCallTransitionFlag;
+class CtrlReqAddDialingCall;
 
 enum CtrlCmd {
   CTRL_CMD_ECHO = 0,
   CTRL_CMD_GET_RADIO_STATE = 1,
   CTRL_CMD_SET_RADIO_STATE = 2,
-  CTRL_CMD_SET_MT_CALL = 1001
+  CTRL_CMD_SET_MT_CALL = 1001,
+  CTRL_CMD_HANGUP_CONN_REMOTE = 1002,
+  CTRL_CMD_SET_CALL_TRANSITION_FLAG = 1003,
+  CTRL_CMD_SET_CALL_ALERT = 1004,
+  CTRL_CMD_SET_CALL_ACTIVE = 1005,
+  CTRL_CMD_ADD_DIALING_CALL = 1006
 };
 bool CtrlCmd_IsValid(int value);
 const CtrlCmd CtrlCmd_MIN = CTRL_CMD_ECHO;
-const CtrlCmd CtrlCmd_MAX = CTRL_CMD_SET_MT_CALL;
+const CtrlCmd CtrlCmd_MAX = CTRL_CMD_ADD_DIALING_CALL;
 const int CtrlCmd_ARRAYSIZE = CtrlCmd_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* CtrlCmd_descriptor();
@@ -348,6 +356,285 @@ class CtrlReqSetMTCall : public ::google::protobuf::Message {
   void InitAsDefaultInstance();
   static CtrlReqSetMTCall* default_instance_;
 };
+// -------------------------------------------------------------------
+
+class CtrlHangupConnRemote : public ::google::protobuf::Message {
+ public:
+  CtrlHangupConnRemote();
+  virtual ~CtrlHangupConnRemote();
+  
+  CtrlHangupConnRemote(const CtrlHangupConnRemote& from);
+  
+  inline CtrlHangupConnRemote& operator=(const CtrlHangupConnRemote& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  
+  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+    return _unknown_fields_;
+  }
+  
+  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+    return &_unknown_fields_;
+  }
+  
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const CtrlHangupConnRemote& default_instance();
+  
+  void Swap(CtrlHangupConnRemote* other);
+  
+  // implements Message ----------------------------------------------
+  
+  CtrlHangupConnRemote* New() const;
+  void CopyFrom(const ::google::protobuf::Message& from);
+  void MergeFrom(const ::google::protobuf::Message& from);
+  void CopyFrom(const CtrlHangupConnRemote& from);
+  void MergeFrom(const CtrlHangupConnRemote& from);
+  void Clear();
+  bool IsInitialized() const;
+  
+  int ByteSize() const;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input);
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const;
+  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
+  int GetCachedSize() const { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const;
+  public:
+  
+  ::google::protobuf::Metadata GetMetadata() const;
+  
+  // nested types ----------------------------------------------------
+  
+  // accessors -------------------------------------------------------
+  
+  // required int32 connection_id = 1;
+  inline bool has_connection_id() const;
+  inline void clear_connection_id();
+  static const int kConnectionIdFieldNumber = 1;
+  inline ::google::protobuf::int32 connection_id() const;
+  inline void set_connection_id(::google::protobuf::int32 value);
+  
+  // required int32 call_fail_cause = 2;
+  inline bool has_call_fail_cause() const;
+  inline void clear_call_fail_cause();
+  static const int kCallFailCauseFieldNumber = 2;
+  inline ::google::protobuf::int32 call_fail_cause() const;
+  inline void set_call_fail_cause(::google::protobuf::int32 value);
+  
+  // @@protoc_insertion_point(class_scope:ril_proto.CtrlHangupConnRemote)
+ private:
+  ::google::protobuf::UnknownFieldSet _unknown_fields_;
+  mutable int _cached_size_;
+  
+  ::google::protobuf::int32 connection_id_;
+  ::google::protobuf::int32 call_fail_cause_;
+  friend void  protobuf_AddDesc_ctrl_2eproto();
+  friend void protobuf_AssignDesc_ctrl_2eproto();
+  friend void protobuf_ShutdownFile_ctrl_2eproto();
+  
+  ::google::protobuf::uint32 _has_bits_[(2 + 31) / 32];
+  
+  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
+  inline bool _has_bit(int index) const {
+    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
+  }
+  inline void _set_bit(int index) {
+    _has_bits_[index / 32] |= (1u << (index % 32));
+  }
+  inline void _clear_bit(int index) {
+    _has_bits_[index / 32] &= ~(1u << (index % 32));
+  }
+  
+  void InitAsDefaultInstance();
+  static CtrlHangupConnRemote* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class CtrlSetCallTransitionFlag : public ::google::protobuf::Message {
+ public:
+  CtrlSetCallTransitionFlag();
+  virtual ~CtrlSetCallTransitionFlag();
+  
+  CtrlSetCallTransitionFlag(const CtrlSetCallTransitionFlag& from);
+  
+  inline CtrlSetCallTransitionFlag& operator=(const CtrlSetCallTransitionFlag& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  
+  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+    return _unknown_fields_;
+  }
+  
+  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+    return &_unknown_fields_;
+  }
+  
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const CtrlSetCallTransitionFlag& default_instance();
+  
+  void Swap(CtrlSetCallTransitionFlag* other);
+  
+  // implements Message ----------------------------------------------
+  
+  CtrlSetCallTransitionFlag* New() const;
+  void CopyFrom(const ::google::protobuf::Message& from);
+  void MergeFrom(const ::google::protobuf::Message& from);
+  void CopyFrom(const CtrlSetCallTransitionFlag& from);
+  void MergeFrom(const CtrlSetCallTransitionFlag& from);
+  void Clear();
+  bool IsInitialized() const;
+  
+  int ByteSize() const;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input);
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const;
+  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
+  int GetCachedSize() const { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const;
+  public:
+  
+  ::google::protobuf::Metadata GetMetadata() const;
+  
+  // nested types ----------------------------------------------------
+  
+  // accessors -------------------------------------------------------
+  
+  // required bool flag = 1;
+  inline bool has_flag() const;
+  inline void clear_flag();
+  static const int kFlagFieldNumber = 1;
+  inline bool flag() const;
+  inline void set_flag(bool value);
+  
+  // @@protoc_insertion_point(class_scope:ril_proto.CtrlSetCallTransitionFlag)
+ private:
+  ::google::protobuf::UnknownFieldSet _unknown_fields_;
+  mutable int _cached_size_;
+  
+  bool flag_;
+  friend void  protobuf_AddDesc_ctrl_2eproto();
+  friend void protobuf_AssignDesc_ctrl_2eproto();
+  friend void protobuf_ShutdownFile_ctrl_2eproto();
+  
+  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
+  
+  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
+  inline bool _has_bit(int index) const {
+    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
+  }
+  inline void _set_bit(int index) {
+    _has_bits_[index / 32] |= (1u << (index % 32));
+  }
+  inline void _clear_bit(int index) {
+    _has_bits_[index / 32] &= ~(1u << (index % 32));
+  }
+  
+  void InitAsDefaultInstance();
+  static CtrlSetCallTransitionFlag* default_instance_;
+};
+// -------------------------------------------------------------------
+
+class CtrlReqAddDialingCall : public ::google::protobuf::Message {
+ public:
+  CtrlReqAddDialingCall();
+  virtual ~CtrlReqAddDialingCall();
+  
+  CtrlReqAddDialingCall(const CtrlReqAddDialingCall& from);
+  
+  inline CtrlReqAddDialingCall& operator=(const CtrlReqAddDialingCall& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  
+  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+    return _unknown_fields_;
+  }
+  
+  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+    return &_unknown_fields_;
+  }
+  
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const CtrlReqAddDialingCall& default_instance();
+  
+  void Swap(CtrlReqAddDialingCall* other);
+  
+  // implements Message ----------------------------------------------
+  
+  CtrlReqAddDialingCall* New() const;
+  void CopyFrom(const ::google::protobuf::Message& from);
+  void MergeFrom(const ::google::protobuf::Message& from);
+  void CopyFrom(const CtrlReqAddDialingCall& from);
+  void MergeFrom(const CtrlReqAddDialingCall& from);
+  void Clear();
+  bool IsInitialized() const;
+  
+  int ByteSize() const;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input);
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const;
+  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
+  int GetCachedSize() const { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const;
+  public:
+  
+  ::google::protobuf::Metadata GetMetadata() const;
+  
+  // nested types ----------------------------------------------------
+  
+  // accessors -------------------------------------------------------
+  
+  // required string phone_number = 1;
+  inline bool has_phone_number() const;
+  inline void clear_phone_number();
+  static const int kPhoneNumberFieldNumber = 1;
+  inline const ::std::string& phone_number() const;
+  inline void set_phone_number(const ::std::string& value);
+  inline void set_phone_number(const char* value);
+  inline void set_phone_number(const char* value, size_t size);
+  inline ::std::string* mutable_phone_number();
+  
+  // @@protoc_insertion_point(class_scope:ril_proto.CtrlReqAddDialingCall)
+ private:
+  ::google::protobuf::UnknownFieldSet _unknown_fields_;
+  mutable int _cached_size_;
+  
+  ::std::string* phone_number_;
+  static const ::std::string _default_phone_number_;
+  friend void  protobuf_AddDesc_ctrl_2eproto();
+  friend void protobuf_AssignDesc_ctrl_2eproto();
+  friend void protobuf_ShutdownFile_ctrl_2eproto();
+  
+  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
+  
+  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
+  inline bool _has_bit(int index) const {
+    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
+  }
+  inline void _set_bit(int index) {
+    _has_bits_[index / 32] |= (1u << (index % 32));
+  }
+  inline void _clear_bit(int index) {
+    _has_bits_[index / 32] &= ~(1u << (index % 32));
+  }
+  
+  void InitAsDefaultInstance();
+  static CtrlReqAddDialingCall* default_instance_;
+};
 // ===================================================================
 
 
@@ -439,6 +726,108 @@ inline ::std::string* CtrlReqSetMTCall::mutable_phone_number() {
   return phone_number_;
 }
 
+// -------------------------------------------------------------------
+
+// CtrlHangupConnRemote
+
+// required int32 connection_id = 1;
+inline bool CtrlHangupConnRemote::has_connection_id() const {
+  return _has_bit(0);
+}
+inline void CtrlHangupConnRemote::clear_connection_id() {
+  connection_id_ = 0;
+  _clear_bit(0);
+}
+inline ::google::protobuf::int32 CtrlHangupConnRemote::connection_id() const {
+  return connection_id_;
+}
+inline void CtrlHangupConnRemote::set_connection_id(::google::protobuf::int32 value) {
+  _set_bit(0);
+  connection_id_ = value;
+}
+
+// required int32 call_fail_cause = 2;
+inline bool CtrlHangupConnRemote::has_call_fail_cause() const {
+  return _has_bit(1);
+}
+inline void CtrlHangupConnRemote::clear_call_fail_cause() {
+  call_fail_cause_ = 0;
+  _clear_bit(1);
+}
+inline ::google::protobuf::int32 CtrlHangupConnRemote::call_fail_cause() const {
+  return call_fail_cause_;
+}
+inline void CtrlHangupConnRemote::set_call_fail_cause(::google::protobuf::int32 value) {
+  _set_bit(1);
+  call_fail_cause_ = value;
+}
+
+// -------------------------------------------------------------------
+
+// CtrlSetCallTransitionFlag
+
+// required bool flag = 1;
+inline bool CtrlSetCallTransitionFlag::has_flag() const {
+  return _has_bit(0);
+}
+inline void CtrlSetCallTransitionFlag::clear_flag() {
+  flag_ = false;
+  _clear_bit(0);
+}
+inline bool CtrlSetCallTransitionFlag::flag() const {
+  return flag_;
+}
+inline void CtrlSetCallTransitionFlag::set_flag(bool value) {
+  _set_bit(0);
+  flag_ = value;
+}
+
+// -------------------------------------------------------------------
+
+// CtrlReqAddDialingCall
+
+// required string phone_number = 1;
+inline bool CtrlReqAddDialingCall::has_phone_number() const {
+  return _has_bit(0);
+}
+inline void CtrlReqAddDialingCall::clear_phone_number() {
+  if (phone_number_ != &_default_phone_number_) {
+    phone_number_->clear();
+  }
+  _clear_bit(0);
+}
+inline const ::std::string& CtrlReqAddDialingCall::phone_number() const {
+  return *phone_number_;
+}
+inline void CtrlReqAddDialingCall::set_phone_number(const ::std::string& value) {
+  _set_bit(0);
+  if (phone_number_ == &_default_phone_number_) {
+    phone_number_ = new ::std::string;
+  }
+  phone_number_->assign(value);
+}
+inline void CtrlReqAddDialingCall::set_phone_number(const char* value) {
+  _set_bit(0);
+  if (phone_number_ == &_default_phone_number_) {
+    phone_number_ = new ::std::string;
+  }
+  phone_number_->assign(value);
+}
+inline void CtrlReqAddDialingCall::set_phone_number(const char* value, size_t size) {
+  _set_bit(0);
+  if (phone_number_ == &_default_phone_number_) {
+    phone_number_ = new ::std::string;
+  }
+  phone_number_->assign(reinterpret_cast<const char*>(value), size);
+}
+inline ::std::string* CtrlReqAddDialingCall::mutable_phone_number() {
+  _set_bit(0);
+  if (phone_number_ == &_default_phone_number_) {
+    phone_number_ = new ::std::string;
+  }
+  return phone_number_;
+}
+
 
 // @@protoc_insertion_point(namespace_scope)
 
index 27f0adc..858ebfe 100644 (file)
@@ -59,6 +59,9 @@ const ::google::protobuf::internal::GeneratedMessageReflection*
 const ::google::protobuf::Descriptor* ReqHangUp_descriptor_ = NULL;
 const ::google::protobuf::internal::GeneratedMessageReflection*
   ReqHangUp_reflection_ = NULL;
+const ::google::protobuf::Descriptor* RspLastCallFailCause_descriptor_ = NULL;
+const ::google::protobuf::internal::GeneratedMessageReflection*
+  RspLastCallFailCause_reflection_ = NULL;
 const ::google::protobuf::Descriptor* RspSignalStrength_descriptor_ = NULL;
 const ::google::protobuf::internal::GeneratedMessageReflection*
   RspSignalStrength_reflection_ = NULL;
@@ -351,7 +354,22 @@ void protobuf_AssignDesc_ril_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(ReqHangUp));
-  RspSignalStrength_descriptor_ = file->message_type(15);
+  RspLastCallFailCause_descriptor_ = file->message_type(15);
+  static const int RspLastCallFailCause_offsets_[1] = {
+    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RspLastCallFailCause, last_call_fail_cause_),
+  };
+  RspLastCallFailCause_reflection_ =
+    new ::google::protobuf::internal::GeneratedMessageReflection(
+      RspLastCallFailCause_descriptor_,
+      RspLastCallFailCause::default_instance_,
+      RspLastCallFailCause_offsets_,
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RspLastCallFailCause, _has_bits_[0]),
+      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RspLastCallFailCause, _unknown_fields_),
+      -1,
+      ::google::protobuf::DescriptorPool::generated_pool(),
+      ::google::protobuf::MessageFactory::generated_factory(),
+      sizeof(RspLastCallFailCause));
+  RspSignalStrength_descriptor_ = file->message_type(16);
   static const int RspSignalStrength_offsets_[3] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RspSignalStrength, gw_signalstrength_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RspSignalStrength, cdma_signalstrength_),
@@ -368,7 +386,7 @@ void protobuf_AssignDesc_ril_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(RspSignalStrength));
-  RspOperator_descriptor_ = file->message_type(16);
+  RspOperator_descriptor_ = file->message_type(17);
   static const int RspOperator_offsets_[3] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RspOperator, long_alpha_ons_),
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(RspOperator, short_alpha_ons_),
@@ -385,7 +403,7 @@ void protobuf_AssignDesc_ril_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(RspOperator));
-  ReqSeparateConnection_descriptor_ = file->message_type(17);
+  ReqSeparateConnection_descriptor_ = file->message_type(18);
   static const int ReqSeparateConnection_offsets_[1] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReqSeparateConnection, index_),
   };
@@ -400,7 +418,7 @@ void protobuf_AssignDesc_ril_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(ReqSeparateConnection));
-  ReqSetMute_descriptor_ = file->message_type(18);
+  ReqSetMute_descriptor_ = file->message_type(19);
   static const int ReqSetMute_offsets_[1] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReqSetMute, state_),
   };
@@ -415,7 +433,7 @@ void protobuf_AssignDesc_ril_2eproto() {
       ::google::protobuf::DescriptorPool::generated_pool(),
       ::google::protobuf::MessageFactory::generated_factory(),
       sizeof(ReqSetMute));
-  ReqScreenState_descriptor_ = file->message_type(19);
+  ReqScreenState_descriptor_ = file->message_type(20);
   static const int ReqScreenState_offsets_[1] = {
     GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReqScreenState, state_),
   };
@@ -482,6 +500,8 @@ void protobuf_RegisterTypes(const ::std::string&) {
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
     ReqHangUp_descriptor_, &ReqHangUp::default_instance());
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
+    RspLastCallFailCause_descriptor_, &RspLastCallFailCause::default_instance());
+  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
     RspSignalStrength_descriptor_, &RspSignalStrength::default_instance());
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
     RspOperator_descriptor_, &RspOperator::default_instance());
@@ -526,6 +546,8 @@ void protobuf_ShutdownFile_ril_2eproto() {
   delete ReqDial_reflection_;
   delete ReqHangUp::default_instance_;
   delete ReqHangUp_reflection_;
+  delete RspLastCallFailCause::default_instance_;
+  delete RspLastCallFailCause_reflection_;
   delete RspSignalStrength::default_instance_;
   delete RspSignalStrength_reflection_;
   delete RspOperator::default_instance_;
@@ -584,73 +606,75 @@ void protobuf_AddDesc_ril_2eproto() {
     "alls\030\001 \003(\0132\022.ril_proto.RilCall\"Q\n\007ReqDia"
     "l\022\017\n\007address\030\001 \001(\t\022\014\n\004clir\030\002 \001(\005\022\'\n\010uus_"
     "info\030\003 \001(\0132\025.ril_proto.RilUusInfo\"%\n\tReq"
-    "HangUp\022\030\n\020connection_index\030\001 \002(\005\"\314\001\n\021Rsp"
-    "SignalStrength\0229\n\021gw_signalstrength\030\001 \001("
-    "\0132\036.ril_proto.RILGWSignalStrength\022=\n\023cdm"
-    "a_signalstrength\030\002 \001(\0132 .ril_proto.RILCD"
-    "MASignalStrength\022=\n\023evdo_signalstrength\030"
-    "\003 \001(\0132 .ril_proto.RILEVDOSignalStrength\""
-    "O\n\013RspOperator\022\026\n\016long_alpha_ons\030\001 \001(\t\022\027"
-    "\n\017short_alpha_ons\030\002 \001(\t\022\017\n\007mcc_mnc\030\003 \001(\t"
-    "\"&\n\025ReqSeparateConnection\022\r\n\005index\030\001 \002(\005"
-    "\"\033\n\nReqSetMute\022\r\n\005state\030\001 \002(\010\"\037\n\016ReqScre"
-    "enState\022\r\n\005state\030\001 \002(\010*\257\002\n\nRadioState\022\022\n"
-    "\016RADIOSTATE_OFF\020\000\022\032\n\026RADIOSTATE_UNAVAILA"
-    "BLE\020\001\022\034\n\030RADIOSTATE_SIM_NOT_READY\020\002\022#\n\037R"
-    "ADIOSTATE_SIM_LOCKED_OR_ABSENT\020\003\022\030\n\024RADI"
-    "OSTATE_SIM_READY\020\004\022\035\n\031RADIOSTATE_RUIM_NO"
-    "T_READY\020\005\022\031\n\025RADIOSTATE_RUIM_READY\020\006\022$\n "
-    "RADIOSTATE_RUIM_LOCKED_OR_ABSENT\020\007\022\033\n\027RA"
-    "DIOSTATE_NV_NOT_READY\020\010\022\027\n\023RADIOSTATE_NV"
-    "_READY\020\t*P\n\014RilCardState\022\024\n\020CARDSTATE_AB"
-    "SENT\020\000\022\025\n\021CARDSTATE_PRESENT\020\001\022\023\n\017CARDSTA"
-    "TE_ERROR\020\002*\361\006\n\020RilPersoSubstate\022\031\n\025PERSO"
-    "SUBSTATE_UNKNOWN\020\000\022\035\n\031PERSOSUBSTATE_IN_P"
-    "ROGRESS\020\001\022\027\n\023PERSOSUBSTATE_READY\020\002\022\035\n\031PE"
-    "RSOSUBSTATE_SIM_NETWORK\020\003\022$\n PERSOSUBSTA"
-    "TE_SIM_NETWORK_SUBSET\020\004\022\037\n\033PERSOSUBSTATE"
-    "_SIM_CORPORATE\020\005\022&\n\"PERSOSUBSTATE_SIM_SE"
-    "RVICE_PROVIDER\020\006\022\031\n\025PERSOSUBSTATE_SIM_SI"
-    "M\020\007\022!\n\035PERSOSUBSTATE_SIM_NETWORK_PUK\020\010\022("
-    "\n$PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK\020\t"
-    "\022#\n\037PERSOSUBSTATE_SIM_CORPORATE_PUK\020\n\022*\n"
-    "&PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK\020"
-    "\013\022\035\n\031PERSOSUBSTATE_SIM_SIM_PUK\020\014\022\037\n\033PERS"
-    "OSUBSTATE_RUIM_NETWORK1\020\r\022\037\n\033PERSOSUBSTA"
-    "TE_RUIM_NETWORK2\020\016\022\033\n\027PERSOSUBSTATE_RUIM"
-    "_HRPD\020\017\022 \n\034PERSOSUBSTATE_RUIM_CORPORATE\020"
-    "\020\022\'\n#PERSOSUBSTATE_RUIM_SERVICE_PROVIDER"
-    "\020\021\022\033\n\027PERSOSUBSTATE_RUIM_RUIM\020\022\022#\n\037PERSO"
-    "SUBSTATE_RUIM_NETWORK1_PUK\020\023\022#\n\037PERSOSUB"
-    "STATE_RUIM_NETWORK2_PUK\020\024\022\037\n\033PERSOSUBSTA"
-    "TE_RUIM_HRPD_PUK\020\025\022$\n PERSOSUBSTATE_RUIM"
-    "_CORPORATE_PUK\020\026\022+\n\'PERSOSUBSTATE_RUIM_S"
-    "ERVICE_PROVIDER_PUK\020\027\022\037\n\033PERSOSUBSTATE_R"
-    "UIM_RUIM_PUK\020\030*\223\001\n\013RilAppState\022\024\n\020APPSTA"
-    "TE_UNKNOWN\020\000\022\025\n\021APPSTATE_DETECTED\020\001\022\020\n\014A"
-    "PPSTATE_PIN\020\002\022\020\n\014APPSTATE_PUK\020\003\022\037\n\033APPST"
-    "ATE_SUBSCRIPTION_PERSO\020\004\022\022\n\016APPSTATE_REA"
-    "DY\020\005*\275\001\n\013RilPinState\022\024\n\020PINSTATE_UNKNOWN"
-    "\020\000\022!\n\035PINSTATE_ENABLED_NOT_VERIFIED\020\001\022\035\n"
-    "\031PINSTATE_ENABLED_VERIFIED\020\002\022\025\n\021PINSTATE"
-    "_DISABLED\020\003\022\034\n\030PINSTATE_ENABLED_BLOCKED\020"
-    "\004\022!\n\035PINSTATE_ENABLED_PERM_BLOCKED\020\005*h\n\n"
-    "RilAppType\022\023\n\017APPTYPE_UNKNOWN\020\000\022\017\n\013APPTY"
-    "PE_SIM\020\001\022\020\n\014APPTYPE_USIM\020\002\022\020\n\014APPTYPE_RU"
-    "IM\020\003\022\020\n\014APPTYPE_CSIM\020\004*\316\001\n\nRilUusType\022\030\n"
-    "\024RILUUSTYPE1_IMPLICIT\020\000\022\030\n\024RILUUSTYPE1_R"
-    "EQUIRED\020\001\022\034\n\030RILUUSTYPE1_NOT_REQUIRED\020\002\022"
-    "\030\n\024RILUUSTYPE2_REQUIRED\020\003\022\034\n\030RILUUSTYPE2"
-    "_NOT_REQUIRED\020\004\022\030\n\024RILUUSTYPE3_REQUIRED\020"
-    "\005\022\034\n\030RILUUSTYPE3_NOT_REQUIRED\020\006*p\n\tRilUu"
-    "sDcs\022\021\n\rRILUUSDCS_USP\020\000\022\024\n\020RILUUSDCS_OSI"
-    "HLP\020\001\022\022\n\016RILUUSDCS_X244\020\002\022\022\n\016RILUUSDCS_R"
-    "MCF\020\003\022\022\n\016RILUUSDCS_IA5c\020\004*\231\001\n\014RilCallSta"
-    "te\022\024\n\020CALLSTATE_ACTIVE\020\000\022\025\n\021CALLSTATE_HO"
-    "LDING\020\001\022\025\n\021CALLSTATE_DIALING\020\002\022\026\n\022CALLST"
-    "ATE_ALERTING\020\003\022\026\n\022CALLSTATE_INCOMING\020\004\022\025"
-    "\n\021CALLSTATE_WAITING\020\005B3\n(com.android.int"
-    "ernal.telephony.ril_protoB\007RilCmds", 4234);
+    "HangUp\022\030\n\020connection_index\030\001 \002(\005\"4\n\024RspL"
+    "astCallFailCause\022\034\n\024last_call_fail_cause"
+    "\030\001 \002(\005\"\314\001\n\021RspSignalStrength\0229\n\021gw_signa"
+    "lstrength\030\001 \001(\0132\036.ril_proto.RILGWSignalS"
+    "trength\022=\n\023cdma_signalstrength\030\002 \001(\0132 .r"
+    "il_proto.RILCDMASignalStrength\022=\n\023evdo_s"
+    "ignalstrength\030\003 \001(\0132 .ril_proto.RILEVDOS"
+    "ignalStrength\"O\n\013RspOperator\022\026\n\016long_alp"
+    "ha_ons\030\001 \001(\t\022\027\n\017short_alpha_ons\030\002 \001(\t\022\017\n"
+    "\007mcc_mnc\030\003 \001(\t\"&\n\025ReqSeparateConnection\022"
+    "\r\n\005index\030\001 \002(\005\"\033\n\nReqSetMute\022\r\n\005state\030\001 "
+    "\002(\010\"\037\n\016ReqScreenState\022\r\n\005state\030\001 \002(\010*\257\002\n"
+    "\nRadioState\022\022\n\016RADIOSTATE_OFF\020\000\022\032\n\026RADIO"
+    "STATE_UNAVAILABLE\020\001\022\034\n\030RADIOSTATE_SIM_NO"
+    "T_READY\020\002\022#\n\037RADIOSTATE_SIM_LOCKED_OR_AB"
+    "SENT\020\003\022\030\n\024RADIOSTATE_SIM_READY\020\004\022\035\n\031RADI"
+    "OSTATE_RUIM_NOT_READY\020\005\022\031\n\025RADIOSTATE_RU"
+    "IM_READY\020\006\022$\n RADIOSTATE_RUIM_LOCKED_OR_"
+    "ABSENT\020\007\022\033\n\027RADIOSTATE_NV_NOT_READY\020\010\022\027\n"
+    "\023RADIOSTATE_NV_READY\020\t*P\n\014RilCardState\022\024"
+    "\n\020CARDSTATE_ABSENT\020\000\022\025\n\021CARDSTATE_PRESEN"
+    "T\020\001\022\023\n\017CARDSTATE_ERROR\020\002*\361\006\n\020RilPersoSub"
+    "state\022\031\n\025PERSOSUBSTATE_UNKNOWN\020\000\022\035\n\031PERS"
+    "OSUBSTATE_IN_PROGRESS\020\001\022\027\n\023PERSOSUBSTATE"
+    "_READY\020\002\022\035\n\031PERSOSUBSTATE_SIM_NETWORK\020\003\022"
+    "$\n PERSOSUBSTATE_SIM_NETWORK_SUBSET\020\004\022\037\n"
+    "\033PERSOSUBSTATE_SIM_CORPORATE\020\005\022&\n\"PERSOS"
+    "UBSTATE_SIM_SERVICE_PROVIDER\020\006\022\031\n\025PERSOS"
+    "UBSTATE_SIM_SIM\020\007\022!\n\035PERSOSUBSTATE_SIM_N"
+    "ETWORK_PUK\020\010\022(\n$PERSOSUBSTATE_SIM_NETWOR"
+    "K_SUBSET_PUK\020\t\022#\n\037PERSOSUBSTATE_SIM_CORP"
+    "ORATE_PUK\020\n\022*\n&PERSOSUBSTATE_SIM_SERVICE"
+    "_PROVIDER_PUK\020\013\022\035\n\031PERSOSUBSTATE_SIM_SIM"
+    "_PUK\020\014\022\037\n\033PERSOSUBSTATE_RUIM_NETWORK1\020\r\022"
+    "\037\n\033PERSOSUBSTATE_RUIM_NETWORK2\020\016\022\033\n\027PERS"
+    "OSUBSTATE_RUIM_HRPD\020\017\022 \n\034PERSOSUBSTATE_R"
+    "UIM_CORPORATE\020\020\022\'\n#PERSOSUBSTATE_RUIM_SE"
+    "RVICE_PROVIDER\020\021\022\033\n\027PERSOSUBSTATE_RUIM_R"
+    "UIM\020\022\022#\n\037PERSOSUBSTATE_RUIM_NETWORK1_PUK"
+    "\020\023\022#\n\037PERSOSUBSTATE_RUIM_NETWORK2_PUK\020\024\022"
+    "\037\n\033PERSOSUBSTATE_RUIM_HRPD_PUK\020\025\022$\n PERS"
+    "OSUBSTATE_RUIM_CORPORATE_PUK\020\026\022+\n\'PERSOS"
+    "UBSTATE_RUIM_SERVICE_PROVIDER_PUK\020\027\022\037\n\033P"
+    "ERSOSUBSTATE_RUIM_RUIM_PUK\020\030*\223\001\n\013RilAppS"
+    "tate\022\024\n\020APPSTATE_UNKNOWN\020\000\022\025\n\021APPSTATE_D"
+    "ETECTED\020\001\022\020\n\014APPSTATE_PIN\020\002\022\020\n\014APPSTATE_"
+    "PUK\020\003\022\037\n\033APPSTATE_SUBSCRIPTION_PERSO\020\004\022\022"
+    "\n\016APPSTATE_READY\020\005*\275\001\n\013RilPinState\022\024\n\020PI"
+    "NSTATE_UNKNOWN\020\000\022!\n\035PINSTATE_ENABLED_NOT"
+    "_VERIFIED\020\001\022\035\n\031PINSTATE_ENABLED_VERIFIED"
+    "\020\002\022\025\n\021PINSTATE_DISABLED\020\003\022\034\n\030PINSTATE_EN"
+    "ABLED_BLOCKED\020\004\022!\n\035PINSTATE_ENABLED_PERM"
+    "_BLOCKED\020\005*h\n\nRilAppType\022\023\n\017APPTYPE_UNKN"
+    "OWN\020\000\022\017\n\013APPTYPE_SIM\020\001\022\020\n\014APPTYPE_USIM\020\002"
+    "\022\020\n\014APPTYPE_RUIM\020\003\022\020\n\014APPTYPE_CSIM\020\004*\316\001\n"
+    "\nRilUusType\022\030\n\024RILUUSTYPE1_IMPLICIT\020\000\022\030\n"
+    "\024RILUUSTYPE1_REQUIRED\020\001\022\034\n\030RILUUSTYPE1_N"
+    "OT_REQUIRED\020\002\022\030\n\024RILUUSTYPE2_REQUIRED\020\003\022"
+    "\034\n\030RILUUSTYPE2_NOT_REQUIRED\020\004\022\030\n\024RILUUST"
+    "YPE3_REQUIRED\020\005\022\034\n\030RILUUSTYPE3_NOT_REQUI"
+    "RED\020\006*p\n\tRilUusDcs\022\021\n\rRILUUSDCS_USP\020\000\022\024\n"
+    "\020RILUUSDCS_OSIHLP\020\001\022\022\n\016RILUUSDCS_X244\020\002\022"
+    "\022\n\016RILUUSDCS_RMCF\020\003\022\022\n\016RILUUSDCS_IA5c\020\004*"
+    "\231\001\n\014RilCallState\022\024\n\020CALLSTATE_ACTIVE\020\000\022\025"
+    "\n\021CALLSTATE_HOLDING\020\001\022\025\n\021CALLSTATE_DIALI"
+    "NG\020\002\022\026\n\022CALLSTATE_ALERTING\020\003\022\026\n\022CALLSTAT"
+    "E_INCOMING\020\004\022\025\n\021CALLSTATE_WAITING\020\005B3\n(c"
+    "om.android.internal.telephony.ril_protoB"
+    "\007RilCmds", 4288);
   ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
     "ril.proto", &protobuf_RegisterTypes);
   RilAppStatus::default_instance_ = new RilAppStatus();
@@ -668,6 +692,7 @@ void protobuf_AddDesc_ril_2eproto() {
   RspGetCurrentCalls::default_instance_ = new RspGetCurrentCalls();
   ReqDial::default_instance_ = new ReqDial();
   ReqHangUp::default_instance_ = new ReqHangUp();
+  RspLastCallFailCause::default_instance_ = new RspLastCallFailCause();
   RspSignalStrength::default_instance_ = new RspSignalStrength();
   RspOperator::default_instance_ = new RspOperator();
   ReqSeparateConnection::default_instance_ = new ReqSeparateConnection();
@@ -688,6 +713,7 @@ void protobuf_AddDesc_ril_2eproto() {
   RspGetCurrentCalls::default_instance_->InitAsDefaultInstance();
   ReqDial::default_instance_->InitAsDefaultInstance();
   ReqHangUp::default_instance_->InitAsDefaultInstance();
+  RspLastCallFailCause::default_instance_->InitAsDefaultInstance();
   RspSignalStrength::default_instance_->InitAsDefaultInstance();
   RspOperator::default_instance_->InitAsDefaultInstance();
   ReqSeparateConnection::default_instance_->InitAsDefaultInstance();
@@ -5516,6 +5542,214 @@ void ReqHangUp::Swap(ReqHangUp* other) {
 // ===================================================================
 
 #ifndef _MSC_VER
+const int RspLastCallFailCause::kLastCallFailCauseFieldNumber;
+#endif  // !_MSC_VER
+
+RspLastCallFailCause::RspLastCallFailCause()
+  : ::google::protobuf::Message() {
+  SharedCtor();
+}
+
+void RspLastCallFailCause::InitAsDefaultInstance() {
+}
+
+RspLastCallFailCause::RspLastCallFailCause(const RspLastCallFailCause& from)
+  : ::google::protobuf::Message() {
+  SharedCtor();
+  MergeFrom(from);
+}
+
+void RspLastCallFailCause::SharedCtor() {
+  _cached_size_ = 0;
+  last_call_fail_cause_ = 0;
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+}
+
+RspLastCallFailCause::~RspLastCallFailCause() {
+  SharedDtor();
+}
+
+void RspLastCallFailCause::SharedDtor() {
+  if (this != default_instance_) {
+  }
+}
+
+void RspLastCallFailCause::SetCachedSize(int size) const {
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+}
+const ::google::protobuf::Descriptor* RspLastCallFailCause::descriptor() {
+  protobuf_AssignDescriptorsOnce();
+  return RspLastCallFailCause_descriptor_;
+}
+
+const RspLastCallFailCause& RspLastCallFailCause::default_instance() {
+  if (default_instance_ == NULL) protobuf_AddDesc_ril_2eproto();  return *default_instance_;
+}
+
+RspLastCallFailCause* RspLastCallFailCause::default_instance_ = NULL;
+
+RspLastCallFailCause* RspLastCallFailCause::New() const {
+  return new RspLastCallFailCause;
+}
+
+void RspLastCallFailCause::Clear() {
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    last_call_fail_cause_ = 0;
+  }
+  ::memset(_has_bits_, 0, sizeof(_has_bits_));
+  mutable_unknown_fields()->Clear();
+}
+
+bool RspLastCallFailCause::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
+  ::google::protobuf::uint32 tag;
+  while ((tag = input->ReadTag()) != 0) {
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // required int32 last_call_fail_cause = 1;
+      case 1: {
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   ::google::protobuf::int32, ::google::protobuf::internal::WireFormatLite::TYPE_INT32>(
+                 input, &last_call_fail_cause_)));
+          _set_bit(0);
+        } else {
+          goto handle_uninterpreted;
+        }
+        if (input->ExpectAtEnd()) return true;
+        break;
+      }
+      
+      default: {
+      handle_uninterpreted:
+        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
+            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
+          return true;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+  return true;
+#undef DO_
+}
+
+void RspLastCallFailCause::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // required int32 last_call_fail_cause = 1;
+  if (_has_bit(0)) {
+    ::google::protobuf::internal::WireFormatLite::WriteInt32(1, this->last_call_fail_cause(), output);
+  }
+  
+  if (!unknown_fields().empty()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        unknown_fields(), output);
+  }
+}
+
+::google::protobuf::uint8* RspLastCallFailCause::SerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // required int32 last_call_fail_cause = 1;
+  if (_has_bit(0)) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteInt32ToArray(1, this->last_call_fail_cause(), target);
+  }
+  
+  if (!unknown_fields().empty()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        unknown_fields(), target);
+  }
+  return target;
+}
+
+int RspLastCallFailCause::ByteSize() const {
+  int total_size = 0;
+  
+  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    // required int32 last_call_fail_cause = 1;
+    if (has_last_call_fail_cause()) {
+      total_size += 1 +
+        ::google::protobuf::internal::WireFormatLite::Int32Size(
+          this->last_call_fail_cause());
+    }
+    
+  }
+  if (!unknown_fields().empty()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        unknown_fields());
+  }
+  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
+  _cached_size_ = total_size;
+  GOOGLE_SAFE_CONCURRENT_WRITES_END();
+  return total_size;
+}
+
+void RspLastCallFailCause::MergeFrom(const ::google::protobuf::Message& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  const RspLastCallFailCause* source =
+    ::google::protobuf::internal::dynamic_cast_if_available<const RspLastCallFailCause*>(
+      &from);
+  if (source == NULL) {
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+    MergeFrom(*source);
+  }
+}
+
+void RspLastCallFailCause::MergeFrom(const RspLastCallFailCause& from) {
+  GOOGLE_CHECK_NE(&from, this);
+  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
+    if (from._has_bit(0)) {
+      set_last_call_fail_cause(from.last_call_fail_cause());
+    }
+  }
+  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
+}
+
+void RspLastCallFailCause::CopyFrom(const ::google::protobuf::Message& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void RspLastCallFailCause::CopyFrom(const RspLastCallFailCause& from) {
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool RspLastCallFailCause::IsInitialized() const {
+  if ((_has_bits_[0] & 0x00000001) != 0x00000001) return false;
+  
+  return true;
+}
+
+void RspLastCallFailCause::Swap(RspLastCallFailCause* other) {
+  if (other != this) {
+    std::swap(last_call_fail_cause_, other->last_call_fail_cause_);
+    std::swap(_has_bits_[0], other->_has_bits_[0]);
+    _unknown_fields_.Swap(&other->_unknown_fields_);
+    std::swap(_cached_size_, other->_cached_size_);
+  }
+}
+
+::google::protobuf::Metadata RspLastCallFailCause::GetMetadata() const {
+  protobuf_AssignDescriptorsOnce();
+  ::google::protobuf::Metadata metadata;
+  metadata.descriptor = RspLastCallFailCause_descriptor_;
+  metadata.reflection = RspLastCallFailCause_reflection_;
+  return metadata;
+}
+
+
+// ===================================================================
+
+#ifndef _MSC_VER
 const int RspSignalStrength::kGwSignalstrengthFieldNumber;
 const int RspSignalStrength::kCdmaSignalstrengthFieldNumber;
 const int RspSignalStrength::kEvdoSignalstrengthFieldNumber;
index 690a4dd..b7e9fc2 100644 (file)
@@ -47,6 +47,7 @@ class RspEnterSimPin;
 class RspGetCurrentCalls;
 class ReqDial;
 class ReqHangUp;
+class RspLastCallFailCause;
 class RspSignalStrength;
 class RspOperator;
 class ReqSeparateConnection;
@@ -1932,6 +1933,95 @@ class ReqHangUp : public ::google::protobuf::Message {
 };
 // -------------------------------------------------------------------
 
+class RspLastCallFailCause : public ::google::protobuf::Message {
+ public:
+  RspLastCallFailCause();
+  virtual ~RspLastCallFailCause();
+  
+  RspLastCallFailCause(const RspLastCallFailCause& from);
+  
+  inline RspLastCallFailCause& operator=(const RspLastCallFailCause& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  
+  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const {
+    return _unknown_fields_;
+  }
+  
+  inline ::google::protobuf::UnknownFieldSet* mutable_unknown_fields() {
+    return &_unknown_fields_;
+  }
+  
+  static const ::google::protobuf::Descriptor* descriptor();
+  static const RspLastCallFailCause& default_instance();
+  
+  void Swap(RspLastCallFailCause* other);
+  
+  // implements Message ----------------------------------------------
+  
+  RspLastCallFailCause* New() const;
+  void CopyFrom(const ::google::protobuf::Message& from);
+  void MergeFrom(const ::google::protobuf::Message& from);
+  void CopyFrom(const RspLastCallFailCause& from);
+  void MergeFrom(const RspLastCallFailCause& from);
+  void Clear();
+  bool IsInitialized() const;
+  
+  int ByteSize() const;
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input);
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const;
+  ::google::protobuf::uint8* SerializeWithCachedSizesToArray(::google::protobuf::uint8* output) const;
+  int GetCachedSize() const { return _cached_size_; }
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const;
+  public:
+  
+  ::google::protobuf::Metadata GetMetadata() const;
+  
+  // nested types ----------------------------------------------------
+  
+  // accessors -------------------------------------------------------
+  
+  // required int32 last_call_fail_cause = 1;
+  inline bool has_last_call_fail_cause() const;
+  inline void clear_last_call_fail_cause();
+  static const int kLastCallFailCauseFieldNumber = 1;
+  inline ::google::protobuf::int32 last_call_fail_cause() const;
+  inline void set_last_call_fail_cause(::google::protobuf::int32 value);
+  
+  // @@protoc_insertion_point(class_scope:ril_proto.RspLastCallFailCause)
+ private:
+  ::google::protobuf::UnknownFieldSet _unknown_fields_;
+  mutable int _cached_size_;
+  
+  ::google::protobuf::int32 last_call_fail_cause_;
+  friend void  protobuf_AddDesc_ril_2eproto();
+  friend void protobuf_AssignDesc_ril_2eproto();
+  friend void protobuf_ShutdownFile_ril_2eproto();
+  
+  ::google::protobuf::uint32 _has_bits_[(1 + 31) / 32];
+  
+  // WHY DOES & HAVE LOWER PRECEDENCE THAN != !?
+  inline bool _has_bit(int index) const {
+    return (_has_bits_[index / 32] & (1u << (index % 32))) != 0;
+  }
+  inline void _set_bit(int index) {
+    _has_bits_[index / 32] |= (1u << (index % 32));
+  }
+  inline void _clear_bit(int index) {
+    _has_bits_[index / 32] &= ~(1u << (index % 32));
+  }
+  
+  void InitAsDefaultInstance();
+  static RspLastCallFailCause* default_instance_;
+};
+// -------------------------------------------------------------------
+
 class RspSignalStrength : public ::google::protobuf::Message {
  public:
   RspSignalStrength();
@@ -3502,6 +3592,26 @@ inline void ReqHangUp::set_connection_index(::google::protobuf::int32 value) {
 
 // -------------------------------------------------------------------
 
+// RspLastCallFailCause
+
+// required int32 last_call_fail_cause = 1;
+inline bool RspLastCallFailCause::has_last_call_fail_cause() const {
+  return _has_bit(0);
+}
+inline void RspLastCallFailCause::clear_last_call_fail_cause() {
+  last_call_fail_cause_ = 0;
+  _clear_bit(0);
+}
+inline ::google::protobuf::int32 RspLastCallFailCause::last_call_fail_cause() const {
+  return last_call_fail_cause_;
+}
+inline void RspLastCallFailCause::set_last_call_fail_cause(::google::protobuf::int32 value) {
+  _set_bit(0);
+  last_call_fail_cause_ = value;
+}
+
+// -------------------------------------------------------------------
+
 // RspSignalStrength
 
 // optional .ril_proto.RILGWSignalStrength gw_signalstrength = 1;
index 8bba2d7..f98fd96 100644 (file)
Binary files a/mock-ril/src/generated/desc/ctrl.desc and b/mock-ril/src/generated/desc/ctrl.desc differ
index 4b04e45..9d40db3 100644 (file)
Binary files a/mock-ril/src/generated/desc/ril.desc and b/mock-ril/src/generated/desc/ril.desc differ
index 3872bb8..a7154db 100644 (file)
@@ -2523,6 +2523,99 @@ public final class RilCmds {
     
   }
   
+  public static final class RspLastCallFailCause extends
+      com.google.protobuf.micro.MessageMicro {
+    public RspLastCallFailCause() {}
+    
+    // required int32 last_call_fail_cause = 1;
+    public static final int LAST_CALL_FAIL_CAUSE_FIELD_NUMBER = 1;
+    private boolean hasLastCallFailCause;
+    private int lastCallFailCause_ = 0;
+    public int getLastCallFailCause() { return lastCallFailCause_; }
+    public boolean hasLastCallFailCause() { return hasLastCallFailCause; }
+    public RspLastCallFailCause setLastCallFailCause(int value) {
+      hasLastCallFailCause = true;
+      lastCallFailCause_ = value;
+      return this;
+    }
+    public RspLastCallFailCause clearLastCallFailCause() {
+      hasLastCallFailCause = false;
+      lastCallFailCause_ = 0;
+      return this;
+    }
+    
+    public final RspLastCallFailCause clear() {
+      clearLastCallFailCause();
+      cachedSize = -1;
+      return this;
+    }
+    
+    public final boolean isInitialized() {
+      if (!hasLastCallFailCause) return false;
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.micro.CodedOutputStreamMicro output)
+                        throws java.io.IOException {
+      if (hasLastCallFailCause()) {
+        output.writeInt32(1, getLastCallFailCause());
+      }
+    }
+    
+    private int cachedSize = -1;
+    public int getCachedSize() {
+      if (cachedSize < 0) {
+        // getSerializedSize sets cachedSize
+        getSerializedSize();
+      }
+      return cachedSize;
+    }
+    
+    public int getSerializedSize() {
+      int size = 0;
+      if (hasLastCallFailCause()) {
+        size += com.google.protobuf.micro.CodedOutputStreamMicro
+          .computeInt32Size(1, getLastCallFailCause());
+      }
+      cachedSize = size;
+      return size;
+    }
+    
+    public RspLastCallFailCause mergeFrom(
+        com.google.protobuf.micro.CodedInputStreamMicro input)
+        throws java.io.IOException {
+      while (true) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            return this;
+          default: {
+            if (!parseUnknownField(input, tag)) {
+              return this;
+            }
+            break;
+          }
+          case 8: {
+            setLastCallFailCause(input.readInt32());
+            break;
+          }
+        }
+      }
+    }
+    
+    public static RspLastCallFailCause parseFrom(byte[] data)
+        throws com.google.protobuf.micro.InvalidProtocolBufferMicroException {
+      return (RspLastCallFailCause) (new RspLastCallFailCause().mergeFrom(data));
+    }
+    
+    public static RspLastCallFailCause parseFrom(
+            com.google.protobuf.micro.CodedInputStreamMicro input)
+        throws java.io.IOException {
+      return (RspLastCallFailCause) (new RspLastCallFailCause().mergeFrom(input));
+    }
+    
+  }
+  
   public static final class RspSignalStrength extends
       com.google.protobuf.micro.MessageMicro {
     public RspSignalStrength() {}
index 712f319..f0a74b7 100644 (file)
@@ -9,6 +9,11 @@ public final class RilCtrlCmds {
   public static final int CTRL_CMD_GET_RADIO_STATE = 1;
   public static final int CTRL_CMD_SET_RADIO_STATE = 2;
   public static final int CTRL_CMD_SET_MT_CALL = 1001;
+  public static final int CTRL_CMD_HANGUP_CONN_REMOTE = 1002;
+  public static final int CTRL_CMD_SET_CALL_TRANSITION_FLAG = 1003;
+  public static final int CTRL_CMD_SET_CALL_ALERT = 1004;
+  public static final int CTRL_CMD_SET_CALL_ACTIVE = 1005;
+  public static final int CTRL_CMD_ADD_DIALING_CALL = 1006;
   
   // enum CtrlStatus
   public static final int CTRL_STATUS_OK = 0;
@@ -293,4 +298,313 @@ public final class RilCtrlCmds {
     
   }
   
+  public static final class CtrlHangupConnRemote extends
+      com.google.protobuf.micro.MessageMicro {
+    public CtrlHangupConnRemote() {}
+    
+    // required int32 connection_id = 1;
+    public static final int CONNECTION_ID_FIELD_NUMBER = 1;
+    private boolean hasConnectionId;
+    private int connectionId_ = 0;
+    public int getConnectionId() { return connectionId_; }
+    public boolean hasConnectionId() { return hasConnectionId; }
+    public CtrlHangupConnRemote setConnectionId(int value) {
+      hasConnectionId = true;
+      connectionId_ = value;
+      return this;
+    }
+    public CtrlHangupConnRemote clearConnectionId() {
+      hasConnectionId = false;
+      connectionId_ = 0;
+      return this;
+    }
+    
+    // required int32 call_fail_cause = 2;
+    public static final int CALL_FAIL_CAUSE_FIELD_NUMBER = 2;
+    private boolean hasCallFailCause;
+    private int callFailCause_ = 0;
+    public int getCallFailCause() { return callFailCause_; }
+    public boolean hasCallFailCause() { return hasCallFailCause; }
+    public CtrlHangupConnRemote setCallFailCause(int value) {
+      hasCallFailCause = true;
+      callFailCause_ = value;
+      return this;
+    }
+    public CtrlHangupConnRemote clearCallFailCause() {
+      hasCallFailCause = false;
+      callFailCause_ = 0;
+      return this;
+    }
+    
+    public final CtrlHangupConnRemote clear() {
+      clearConnectionId();
+      clearCallFailCause();
+      cachedSize = -1;
+      return this;
+    }
+    
+    public final boolean isInitialized() {
+      if (!hasConnectionId) return false;
+      if (!hasCallFailCause) return false;
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.micro.CodedOutputStreamMicro output)
+                        throws java.io.IOException {
+      if (hasConnectionId()) {
+        output.writeInt32(1, getConnectionId());
+      }
+      if (hasCallFailCause()) {
+        output.writeInt32(2, getCallFailCause());
+      }
+    }
+    
+    private int cachedSize = -1;
+    public int getCachedSize() {
+      if (cachedSize < 0) {
+        // getSerializedSize sets cachedSize
+        getSerializedSize();
+      }
+      return cachedSize;
+    }
+    
+    public int getSerializedSize() {
+      int size = 0;
+      if (hasConnectionId()) {
+        size += com.google.protobuf.micro.CodedOutputStreamMicro
+          .computeInt32Size(1, getConnectionId());
+      }
+      if (hasCallFailCause()) {
+        size += com.google.protobuf.micro.CodedOutputStreamMicro
+          .computeInt32Size(2, getCallFailCause());
+      }
+      cachedSize = size;
+      return size;
+    }
+    
+    public CtrlHangupConnRemote mergeFrom(
+        com.google.protobuf.micro.CodedInputStreamMicro input)
+        throws java.io.IOException {
+      while (true) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            return this;
+          default: {
+            if (!parseUnknownField(input, tag)) {
+              return this;
+            }
+            break;
+          }
+          case 8: {
+            setConnectionId(input.readInt32());
+            break;
+          }
+          case 16: {
+            setCallFailCause(input.readInt32());
+            break;
+          }
+        }
+      }
+    }
+    
+    public static CtrlHangupConnRemote parseFrom(byte[] data)
+        throws com.google.protobuf.micro.InvalidProtocolBufferMicroException {
+      return (CtrlHangupConnRemote) (new CtrlHangupConnRemote().mergeFrom(data));
+    }
+    
+    public static CtrlHangupConnRemote parseFrom(
+            com.google.protobuf.micro.CodedInputStreamMicro input)
+        throws java.io.IOException {
+      return (CtrlHangupConnRemote) (new CtrlHangupConnRemote().mergeFrom(input));
+    }
+    
+  }
+  
+  public static final class CtrlSetCallTransitionFlag extends
+      com.google.protobuf.micro.MessageMicro {
+    public CtrlSetCallTransitionFlag() {}
+    
+    // required bool flag = 1;
+    public static final int FLAG_FIELD_NUMBER = 1;
+    private boolean hasFlag;
+    private boolean flag_ = false;
+    public boolean getFlag() { return flag_; }
+    public boolean hasFlag() { return hasFlag; }
+    public CtrlSetCallTransitionFlag setFlag(boolean value) {
+      hasFlag = true;
+      flag_ = value;
+      return this;
+    }
+    public CtrlSetCallTransitionFlag clearFlag() {
+      hasFlag = false;
+      flag_ = false;
+      return this;
+    }
+    
+    public final CtrlSetCallTransitionFlag clear() {
+      clearFlag();
+      cachedSize = -1;
+      return this;
+    }
+    
+    public final boolean isInitialized() {
+      if (!hasFlag) return false;
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.micro.CodedOutputStreamMicro output)
+                        throws java.io.IOException {
+      if (hasFlag()) {
+        output.writeBool(1, getFlag());
+      }
+    }
+    
+    private int cachedSize = -1;
+    public int getCachedSize() {
+      if (cachedSize < 0) {
+        // getSerializedSize sets cachedSize
+        getSerializedSize();
+      }
+      return cachedSize;
+    }
+    
+    public int getSerializedSize() {
+      int size = 0;
+      if (hasFlag()) {
+        size += com.google.protobuf.micro.CodedOutputStreamMicro
+          .computeBoolSize(1, getFlag());
+      }
+      cachedSize = size;
+      return size;
+    }
+    
+    public CtrlSetCallTransitionFlag mergeFrom(
+        com.google.protobuf.micro.CodedInputStreamMicro input)
+        throws java.io.IOException {
+      while (true) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            return this;
+          default: {
+            if (!parseUnknownField(input, tag)) {
+              return this;
+            }
+            break;
+          }
+          case 8: {
+            setFlag(input.readBool());
+            break;
+          }
+        }
+      }
+    }
+    
+    public static CtrlSetCallTransitionFlag parseFrom(byte[] data)
+        throws com.google.protobuf.micro.InvalidProtocolBufferMicroException {
+      return (CtrlSetCallTransitionFlag) (new CtrlSetCallTransitionFlag().mergeFrom(data));
+    }
+    
+    public static CtrlSetCallTransitionFlag parseFrom(
+            com.google.protobuf.micro.CodedInputStreamMicro input)
+        throws java.io.IOException {
+      return (CtrlSetCallTransitionFlag) (new CtrlSetCallTransitionFlag().mergeFrom(input));
+    }
+    
+  }
+  
+  public static final class CtrlReqAddDialingCall extends
+      com.google.protobuf.micro.MessageMicro {
+    public CtrlReqAddDialingCall() {}
+    
+    // required string phone_number = 1;
+    public static final int PHONE_NUMBER_FIELD_NUMBER = 1;
+    private boolean hasPhoneNumber;
+    private java.lang.String phoneNumber_ = "";
+    public java.lang.String getPhoneNumber() { return phoneNumber_; }
+    public boolean hasPhoneNumber() { return hasPhoneNumber; }
+    public CtrlReqAddDialingCall setPhoneNumber(java.lang.String value) {
+      hasPhoneNumber = true;
+      phoneNumber_ = value;
+      return this;
+    }
+    public CtrlReqAddDialingCall clearPhoneNumber() {
+      hasPhoneNumber = false;
+      phoneNumber_ = "";
+      return this;
+    }
+    
+    public final CtrlReqAddDialingCall clear() {
+      clearPhoneNumber();
+      cachedSize = -1;
+      return this;
+    }
+    
+    public final boolean isInitialized() {
+      if (!hasPhoneNumber) return false;
+      return true;
+    }
+    
+    public void writeTo(com.google.protobuf.micro.CodedOutputStreamMicro output)
+                        throws java.io.IOException {
+      if (hasPhoneNumber()) {
+        output.writeString(1, getPhoneNumber());
+      }
+    }
+    
+    private int cachedSize = -1;
+    public int getCachedSize() {
+      if (cachedSize < 0) {
+        // getSerializedSize sets cachedSize
+        getSerializedSize();
+      }
+      return cachedSize;
+    }
+    
+    public int getSerializedSize() {
+      int size = 0;
+      if (hasPhoneNumber()) {
+        size += com.google.protobuf.micro.CodedOutputStreamMicro
+          .computeStringSize(1, getPhoneNumber());
+      }
+      cachedSize = size;
+      return size;
+    }
+    
+    public CtrlReqAddDialingCall mergeFrom(
+        com.google.protobuf.micro.CodedInputStreamMicro input)
+        throws java.io.IOException {
+      while (true) {
+        int tag = input.readTag();
+        switch (tag) {
+          case 0:
+            return this;
+          default: {
+            if (!parseUnknownField(input, tag)) {
+              return this;
+            }
+            break;
+          }
+          case 10: {
+            setPhoneNumber(input.readString());
+            break;
+          }
+        }
+      }
+    }
+    
+    public static CtrlReqAddDialingCall parseFrom(byte[] data)
+        throws com.google.protobuf.micro.InvalidProtocolBufferMicroException {
+      return (CtrlReqAddDialingCall) (new CtrlReqAddDialingCall().mergeFrom(data));
+    }
+    
+    public static CtrlReqAddDialingCall parseFrom(
+            com.google.protobuf.micro.CodedInputStreamMicro input)
+        throws java.io.IOException {
+      return (CtrlReqAddDialingCall) (new CtrlReqAddDialingCall().mergeFrom(input));
+    }
+    
+  }
+  
 }
index f323740..11a77b1 100644 (file)
@@ -10,7 +10,7 @@ from google.protobuf import descriptor_pb2
 DESCRIPTOR = descriptor.FileDescriptor(
   name='ctrl.proto',
   package='ril_proto',
-  serialized_pb='\n\nctrl.proto\x12\tril_proto\x1a\tril.proto\"9\n\x11\x43trlReqRadioState\x12$\n\x05state\x18\x01 \x02(\x0e\x32\x15.ril_proto.RadioState\"9\n\x11\x43trlRspRadioState\x12$\n\x05state\x18\x01 \x02(\x0e\x32\x15.ril_proto.RadioState\"(\n\x10\x43trlReqSetMTCall\x12\x14\n\x0cphone_number\x18\x01 \x02(\t*s\n\x07\x43trlCmd\x12\x11\n\rCTRL_CMD_ECHO\x10\x00\x12\x1c\n\x18\x43TRL_CMD_GET_RADIO_STATE\x10\x01\x12\x1c\n\x18\x43TRL_CMD_SET_RADIO_STATE\x10\x02\x12\x19\n\x14\x43TRL_CMD_SET_MT_CALL\x10\xe9\x07*5\n\nCtrlStatus\x12\x12\n\x0e\x43TRL_STATUS_OK\x10\x00\x12\x13\n\x0f\x43TRL_STATUS_ERR\x10\x01\x42\x37\n(com.android.internal.telephony.ril_protoB\x0bRilCtrlCmds')
+  serialized_pb='\n\nctrl.proto\x12\tril_proto\x1a\tril.proto\"9\n\x11\x43trlReqRadioState\x12$\n\x05state\x18\x01 \x02(\x0e\x32\x15.ril_proto.RadioState\"9\n\x11\x43trlRspRadioState\x12$\n\x05state\x18\x01 \x02(\x0e\x32\x15.ril_proto.RadioState\"(\n\x10\x43trlReqSetMTCall\x12\x14\n\x0cphone_number\x18\x01 \x02(\t\"F\n\x14\x43trlHangupConnRemote\x12\x15\n\rconnection_id\x18\x01 \x02(\x05\x12\x17\n\x0f\x63\x61ll_fail_cause\x18\x02 \x02(\x05\")\n\x19\x43trlSetCallTransitionFlag\x12\x0c\n\x04\x66lag\x18\x01 \x02(\x08\"-\n\x15\x43trlReqAddDialingCall\x12\x14\n\x0cphone_number\x18\x01 \x02(\t*\x9a\x02\n\x07\x43trlCmd\x12\x11\n\rCTRL_CMD_ECHO\x10\x00\x12\x1c\n\x18\x43TRL_CMD_GET_RADIO_STATE\x10\x01\x12\x1c\n\x18\x43TRL_CMD_SET_RADIO_STATE\x10\x02\x12\x19\n\x14\x43TRL_CMD_SET_MT_CALL\x10\xe9\x07\x12 \n\x1b\x43TRL_CMD_HANGUP_CONN_REMOTE\x10\xea\x07\x12&\n!CTRL_CMD_SET_CALL_TRANSITION_FLAG\x10\xeb\x07\x12\x1c\n\x17\x43TRL_CMD_SET_CALL_ALERT\x10\xec\x07\x12\x1d\n\x18\x43TRL_CMD_SET_CALL_ACTIVE\x10\xed\x07\x12\x1e\n\x19\x43TRL_CMD_ADD_DIALING_CALL\x10\xee\x07*5\n\nCtrlStatus\x12\x12\n\x0e\x43TRL_STATUS_OK\x10\x00\x12\x13\n\x0f\x43TRL_STATUS_ERR\x10\x01\x42\x37\n(com.android.internal.telephony.ril_protoB\x0bRilCtrlCmds')
 
 _CTRLCMD = descriptor.EnumDescriptor(
   name='CtrlCmd',
@@ -34,11 +34,31 @@ _CTRLCMD = descriptor.EnumDescriptor(
       name='CTRL_CMD_SET_MT_CALL', index=3, number=1001,
       options=None,
       type=None),
+    descriptor.EnumValueDescriptor(
+      name='CTRL_CMD_HANGUP_CONN_REMOTE', index=4, number=1002,
+      options=None,
+      type=None),
+    descriptor.EnumValueDescriptor(
+      name='CTRL_CMD_SET_CALL_TRANSITION_FLAG', index=5, number=1003,
+      options=None,
+      type=None),
+    descriptor.EnumValueDescriptor(
+      name='CTRL_CMD_SET_CALL_ALERT', index=6, number=1004,
+      options=None,
+      type=None),
+    descriptor.EnumValueDescriptor(
+      name='CTRL_CMD_SET_CALL_ACTIVE', index=7, number=1005,
+      options=None,
+      type=None),
+    descriptor.EnumValueDescriptor(
+      name='CTRL_CMD_ADD_DIALING_CALL', index=8, number=1006,
+      options=None,
+      type=None),
   ],
   containing_type=None,
   options=None,
-  serialized_start=196,
-  serialized_end=311,
+  serialized_start=359,
+  serialized_end=641,
 )
 
 
@@ -59,8 +79,8 @@ _CTRLSTATUS = descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=313,
-  serialized_end=366,
+  serialized_start=643,
+  serialized_end=696,
 )
 
 
@@ -68,6 +88,11 @@ CTRL_CMD_ECHO = 0
 CTRL_CMD_GET_RADIO_STATE = 1
 CTRL_CMD_SET_RADIO_STATE = 2
 CTRL_CMD_SET_MT_CALL = 1001
+CTRL_CMD_HANGUP_CONN_REMOTE = 1002
+CTRL_CMD_SET_CALL_TRANSITION_FLAG = 1003
+CTRL_CMD_SET_CALL_ALERT = 1004
+CTRL_CMD_SET_CALL_ACTIVE = 1005
+CTRL_CMD_ADD_DIALING_CALL = 1006
 CTRL_STATUS_OK = 0
 CTRL_STATUS_ERR = 1
 
@@ -156,6 +181,97 @@ _CTRLREQSETMTCALL = descriptor.Descriptor(
   serialized_end=194,
 )
 
+
+_CTRLHANGUPCONNREMOTE = descriptor.Descriptor(
+  name='CtrlHangupConnRemote',
+  full_name='ril_proto.CtrlHangupConnRemote',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='connection_id', full_name='ril_proto.CtrlHangupConnRemote.connection_id', index=0,
+      number=1, type=5, cpp_type=1, label=2,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    descriptor.FieldDescriptor(
+      name='call_fail_cause', full_name='ril_proto.CtrlHangupConnRemote.call_fail_cause', index=1,
+      number=2, type=5, cpp_type=1, label=2,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=196,
+  serialized_end=266,
+)
+
+
+_CTRLSETCALLTRANSITIONFLAG = descriptor.Descriptor(
+  name='CtrlSetCallTransitionFlag',
+  full_name='ril_proto.CtrlSetCallTransitionFlag',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='flag', full_name='ril_proto.CtrlSetCallTransitionFlag.flag', index=0,
+      number=1, type=8, cpp_type=7, label=2,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=268,
+  serialized_end=309,
+)
+
+
+_CTRLREQADDDIALINGCALL = descriptor.Descriptor(
+  name='CtrlReqAddDialingCall',
+  full_name='ril_proto.CtrlReqAddDialingCall',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='phone_number', full_name='ril_proto.CtrlReqAddDialingCall.phone_number', index=0,
+      number=1, type=9, cpp_type=9, label=2,
+      has_default_value=False, default_value=unicode("", "utf-8"),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=311,
+  serialized_end=356,
+)
+
 import ril_pb2
 
 _CTRLREQRADIOSTATE.fields_by_name['state'].enum_type = ril_pb2._RADIOSTATE
@@ -179,4 +295,22 @@ class CtrlReqSetMTCall(message.Message):
   
   # @@protoc_insertion_point(class_scope:ril_proto.CtrlReqSetMTCall)
 
+class CtrlHangupConnRemote(message.Message):
+  __metaclass__ = reflection.GeneratedProtocolMessageType
+  DESCRIPTOR = _CTRLHANGUPCONNREMOTE
+  
+  # @@protoc_insertion_point(class_scope:ril_proto.CtrlHangupConnRemote)
+
+class CtrlSetCallTransitionFlag(message.Message):
+  __metaclass__ = reflection.GeneratedProtocolMessageType
+  DESCRIPTOR = _CTRLSETCALLTRANSITIONFLAG
+  
+  # @@protoc_insertion_point(class_scope:ril_proto.CtrlSetCallTransitionFlag)
+
+class CtrlReqAddDialingCall(message.Message):
+  __metaclass__ = reflection.GeneratedProtocolMessageType
+  DESCRIPTOR = _CTRLREQADDDIALINGCALL
+  
+  # @@protoc_insertion_point(class_scope:ril_proto.CtrlReqAddDialingCall)
+
 # @@protoc_insertion_point(module_scope)
index 9f9d13c..748ffbb 100644 (file)
@@ -10,7 +10,7 @@ from google.protobuf import descriptor_pb2
 DESCRIPTOR = descriptor.FileDescriptor(
   name='ril.proto',
   package='ril_proto',
-  serialized_pb='\n\tril.proto\x12\tril_proto\"\x9a\x02\n\x0cRilAppStatus\x12\'\n\x08\x61pp_type\x18\x01 \x01(\x0e\x32\x15.ril_proto.RilAppType\x12)\n\tapp_state\x18\x02 \x01(\x0e\x32\x16.ril_proto.RilAppState\x12\x33\n\x0eperso_substate\x18\x03 \x01(\x0e\x32\x1b.ril_proto.RilPersoSubstate\x12\x0b\n\x03\x61id\x18\x04 \x01(\t\x12\x11\n\tapp_label\x18\x05 \x01(\t\x12\x15\n\rpin1_replaced\x18\x06 \x01(\x05\x12$\n\x04pin1\x18\x07 \x01(\x0e\x32\x16.ril_proto.RilPinState\x12$\n\x04pin2\x18\x08 \x01(\x0e\x32\x16.ril_proto.RilPinState\"\x88\x02\n\rRilCardStatus\x12+\n\ncard_state\x18\x01 \x01(\x0e\x32\x17.ril_proto.RilCardState\x12\x33\n\x13universal_pin_state\x18\x02 \x01(\x0e\x32\x16.ril_proto.RilPinState\x12\'\n\x1fgsm_umts_subscription_app_index\x18\x03 \x01(\x05\x12#\n\x1b\x63\x64ma_subscription_app_index\x18\x04 \x01(\x05\x12\x18\n\x10num_applications\x18\x05 \x01(\x05\x12-\n\x0c\x61pplications\x18\x06 \x03(\x0b\x32\x17.ril_proto.RilAppStatus\"\x82\x01\n\nRilUusInfo\x12\'\n\x08uus_type\x18\x01 \x01(\x0e\x32\x15.ril_proto.RilUusType\x12%\n\x07uus_dcs\x18\x02 \x01(\x0e\x32\x14.ril_proto.RilUusDcs\x12\x12\n\nuus_length\x18\x03 \x01(\x05\x12\x10\n\x08uus_data\x18\x04 \x01(\t\"\xa5\x02\n\x07RilCall\x12&\n\x05state\x18\x01 \x01(\x0e\x32\x17.ril_proto.RilCallState\x12\r\n\x05index\x18\x02 \x01(\x05\x12\x0b\n\x03toa\x18\x03 \x01(\x05\x12\x0f\n\x07is_mpty\x18\x04 \x01(\x08\x12\r\n\x05is_mt\x18\x05 \x01(\x08\x12\x0b\n\x03\x61ls\x18\x06 \x01(\x05\x12\x10\n\x08is_voice\x18\x07 \x01(\x08\x12\x18\n\x10is_voice_privacy\x18\x08 \x01(\x08\x12\x0e\n\x06number\x18\t \x01(\t\x12\x1b\n\x13number_presentation\x18\n \x01(\x05\x12\x0c\n\x04name\x18\x0b \x01(\t\x12\x19\n\x11name_presentation\x18\x0c \x01(\x05\x12\'\n\x08uus_info\x18\r \x01(\x0b\x32\x15.ril_proto.RilUusInfo\"F\n\x13RILGWSignalStrength\x12\x17\n\x0fsignal_strength\x18\x01 \x01(\x05\x12\x16\n\x0e\x62it_error_rate\x18\x02 \x01(\x05\"2\n\x15RILCDMASignalStrength\x12\x0b\n\x03\x64\x62m\x18\x01 \x01(\x05\x12\x0c\n\x04\x65\x63io\x18\x02 \x01(\x05\"N\n\x15RILEVDOSignalStrength\x12\x0b\n\x03\x64\x62m\x18\x01 \x01(\x05\x12\x0c\n\x04\x65\x63io\x18\x02 \x01(\x05\x12\x1a\n\x12signal_noise_ratio\x18\x03 \x01(\x05\"\x1d\n\nRspStrings\x12\x0f\n\x07strings\x18\x01 \x03(\t\"\x1f\n\x0bRspIntegers\x12\x10\n\x08integers\x18\x01 \x03(\x05\"@\n\x0fRspGetSimStatus\x12-\n\x0b\x63\x61rd_status\x18\x01 \x02(\x0b\x32\x18.ril_proto.RilCardStatus\"\x1d\n\x0eReqEnterSimPin\x12\x0b\n\x03pin\x18\x01 \x02(\t\"+\n\x0eRspEnterSimPin\x12\x19\n\x11retries_remaining\x18\x01 \x02(\x05\"7\n\x12RspGetCurrentCalls\x12!\n\x05\x63\x61lls\x18\x01 \x03(\x0b\x32\x12.ril_proto.RilCall\"Q\n\x07ReqDial\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x0c\n\x04\x63lir\x18\x02 \x01(\x05\x12\'\n\x08uus_info\x18\x03 \x01(\x0b\x32\x15.ril_proto.RilUusInfo\"%\n\tReqHangUp\x12\x18\n\x10\x63onnection_index\x18\x01 \x02(\x05\"\xcc\x01\n\x11RspSignalStrength\x12\x39\n\x11gw_signalstrength\x18\x01 \x01(\x0b\x32\x1e.ril_proto.RILGWSignalStrength\x12=\n\x13\x63\x64ma_signalstrength\x18\x02 \x01(\x0b\x32 .ril_proto.RILCDMASignalStrength\x12=\n\x13\x65vdo_signalstrength\x18\x03 \x01(\x0b\x32 .ril_proto.RILEVDOSignalStrength\"O\n\x0bRspOperator\x12\x16\n\x0elong_alpha_ons\x18\x01 \x01(\t\x12\x17\n\x0fshort_alpha_ons\x18\x02 \x01(\t\x12\x0f\n\x07mcc_mnc\x18\x03 \x01(\t\"&\n\x15ReqSeparateConnection\x12\r\n\x05index\x18\x01 \x02(\x05\"\x1b\n\nReqSetMute\x12\r\n\x05state\x18\x01 \x02(\x08\"\x1f\n\x0eReqScreenState\x12\r\n\x05state\x18\x01 \x02(\x08*\xaf\x02\n\nRadioState\x12\x12\n\x0eRADIOSTATE_OFF\x10\x00\x12\x1a\n\x16RADIOSTATE_UNAVAILABLE\x10\x01\x12\x1c\n\x18RADIOSTATE_SIM_NOT_READY\x10\x02\x12#\n\x1fRADIOSTATE_SIM_LOCKED_OR_ABSENT\x10\x03\x12\x18\n\x14RADIOSTATE_SIM_READY\x10\x04\x12\x1d\n\x19RADIOSTATE_RUIM_NOT_READY\x10\x05\x12\x19\n\x15RADIOSTATE_RUIM_READY\x10\x06\x12$\n RADIOSTATE_RUIM_LOCKED_OR_ABSENT\x10\x07\x12\x1b\n\x17RADIOSTATE_NV_NOT_READY\x10\x08\x12\x17\n\x13RADIOSTATE_NV_READY\x10\t*P\n\x0cRilCardState\x12\x14\n\x10\x43\x41RDSTATE_ABSENT\x10\x00\x12\x15\n\x11\x43\x41RDSTATE_PRESENT\x10\x01\x12\x13\n\x0f\x43\x41RDSTATE_ERROR\x10\x02*\xf1\x06\n\x10RilPersoSubstate\x12\x19\n\x15PERSOSUBSTATE_UNKNOWN\x10\x00\x12\x1d\n\x19PERSOSUBSTATE_IN_PROGRESS\x10\x01\x12\x17\n\x13PERSOSUBSTATE_READY\x10\x02\x12\x1d\n\x19PERSOSUBSTATE_SIM_NETWORK\x10\x03\x12$\n PERSOSUBSTATE_SIM_NETWORK_SUBSET\x10\x04\x12\x1f\n\x1bPERSOSUBSTATE_SIM_CORPORATE\x10\x05\x12&\n\"PERSOSUBSTATE_SIM_SERVICE_PROVIDER\x10\x06\x12\x19\n\x15PERSOSUBSTATE_SIM_SIM\x10\x07\x12!\n\x1dPERSOSUBSTATE_SIM_NETWORK_PUK\x10\x08\x12(\n$PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK\x10\t\x12#\n\x1fPERSOSUBSTATE_SIM_CORPORATE_PUK\x10\n\x12*\n&PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK\x10\x0b\x12\x1d\n\x19PERSOSUBSTATE_SIM_SIM_PUK\x10\x0c\x12\x1f\n\x1bPERSOSUBSTATE_RUIM_NETWORK1\x10\r\x12\x1f\n\x1bPERSOSUBSTATE_RUIM_NETWORK2\x10\x0e\x12\x1b\n\x17PERSOSUBSTATE_RUIM_HRPD\x10\x0f\x12 \n\x1cPERSOSUBSTATE_RUIM_CORPORATE\x10\x10\x12\'\n#PERSOSUBSTATE_RUIM_SERVICE_PROVIDER\x10\x11\x12\x1b\n\x17PERSOSUBSTATE_RUIM_RUIM\x10\x12\x12#\n\x1fPERSOSUBSTATE_RUIM_NETWORK1_PUK\x10\x13\x12#\n\x1fPERSOSUBSTATE_RUIM_NETWORK2_PUK\x10\x14\x12\x1f\n\x1bPERSOSUBSTATE_RUIM_HRPD_PUK\x10\x15\x12$\n PERSOSUBSTATE_RUIM_CORPORATE_PUK\x10\x16\x12+\n\'PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK\x10\x17\x12\x1f\n\x1bPERSOSUBSTATE_RUIM_RUIM_PUK\x10\x18*\x93\x01\n\x0bRilAppState\x12\x14\n\x10\x41PPSTATE_UNKNOWN\x10\x00\x12\x15\n\x11\x41PPSTATE_DETECTED\x10\x01\x12\x10\n\x0c\x41PPSTATE_PIN\x10\x02\x12\x10\n\x0c\x41PPSTATE_PUK\x10\x03\x12\x1f\n\x1b\x41PPSTATE_SUBSCRIPTION_PERSO\x10\x04\x12\x12\n\x0e\x41PPSTATE_READY\x10\x05*\xbd\x01\n\x0bRilPinState\x12\x14\n\x10PINSTATE_UNKNOWN\x10\x00\x12!\n\x1dPINSTATE_ENABLED_NOT_VERIFIED\x10\x01\x12\x1d\n\x19PINSTATE_ENABLED_VERIFIED\x10\x02\x12\x15\n\x11PINSTATE_DISABLED\x10\x03\x12\x1c\n\x18PINSTATE_ENABLED_BLOCKED\x10\x04\x12!\n\x1dPINSTATE_ENABLED_PERM_BLOCKED\x10\x05*h\n\nRilAppType\x12\x13\n\x0f\x41PPTYPE_UNKNOWN\x10\x00\x12\x0f\n\x0b\x41PPTYPE_SIM\x10\x01\x12\x10\n\x0c\x41PPTYPE_USIM\x10\x02\x12\x10\n\x0c\x41PPTYPE_RUIM\x10\x03\x12\x10\n\x0c\x41PPTYPE_CSIM\x10\x04*\xce\x01\n\nRilUusType\x12\x18\n\x14RILUUSTYPE1_IMPLICIT\x10\x00\x12\x18\n\x14RILUUSTYPE1_REQUIRED\x10\x01\x12\x1c\n\x18RILUUSTYPE1_NOT_REQUIRED\x10\x02\x12\x18\n\x14RILUUSTYPE2_REQUIRED\x10\x03\x12\x1c\n\x18RILUUSTYPE2_NOT_REQUIRED\x10\x04\x12\x18\n\x14RILUUSTYPE3_REQUIRED\x10\x05\x12\x1c\n\x18RILUUSTYPE3_NOT_REQUIRED\x10\x06*p\n\tRilUusDcs\x12\x11\n\rRILUUSDCS_USP\x10\x00\x12\x14\n\x10RILUUSDCS_OSIHLP\x10\x01\x12\x12\n\x0eRILUUSDCS_X244\x10\x02\x12\x12\n\x0eRILUUSDCS_RMCF\x10\x03\x12\x12\n\x0eRILUUSDCS_IA5c\x10\x04*\x99\x01\n\x0cRilCallState\x12\x14\n\x10\x43\x41LLSTATE_ACTIVE\x10\x00\x12\x15\n\x11\x43\x41LLSTATE_HOLDING\x10\x01\x12\x15\n\x11\x43\x41LLSTATE_DIALING\x10\x02\x12\x16\n\x12\x43\x41LLSTATE_ALERTING\x10\x03\x12\x16\n\x12\x43\x41LLSTATE_INCOMING\x10\x04\x12\x15\n\x11\x43\x41LLSTATE_WAITING\x10\x05\x42\x33\n(com.android.internal.telephony.ril_protoB\x07RilCmds')
+  serialized_pb='\n\tril.proto\x12\tril_proto\"\x9a\x02\n\x0cRilAppStatus\x12\'\n\x08\x61pp_type\x18\x01 \x01(\x0e\x32\x15.ril_proto.RilAppType\x12)\n\tapp_state\x18\x02 \x01(\x0e\x32\x16.ril_proto.RilAppState\x12\x33\n\x0eperso_substate\x18\x03 \x01(\x0e\x32\x1b.ril_proto.RilPersoSubstate\x12\x0b\n\x03\x61id\x18\x04 \x01(\t\x12\x11\n\tapp_label\x18\x05 \x01(\t\x12\x15\n\rpin1_replaced\x18\x06 \x01(\x05\x12$\n\x04pin1\x18\x07 \x01(\x0e\x32\x16.ril_proto.RilPinState\x12$\n\x04pin2\x18\x08 \x01(\x0e\x32\x16.ril_proto.RilPinState\"\x88\x02\n\rRilCardStatus\x12+\n\ncard_state\x18\x01 \x01(\x0e\x32\x17.ril_proto.RilCardState\x12\x33\n\x13universal_pin_state\x18\x02 \x01(\x0e\x32\x16.ril_proto.RilPinState\x12\'\n\x1fgsm_umts_subscription_app_index\x18\x03 \x01(\x05\x12#\n\x1b\x63\x64ma_subscription_app_index\x18\x04 \x01(\x05\x12\x18\n\x10num_applications\x18\x05 \x01(\x05\x12-\n\x0c\x61pplications\x18\x06 \x03(\x0b\x32\x17.ril_proto.RilAppStatus\"\x82\x01\n\nRilUusInfo\x12\'\n\x08uus_type\x18\x01 \x01(\x0e\x32\x15.ril_proto.RilUusType\x12%\n\x07uus_dcs\x18\x02 \x01(\x0e\x32\x14.ril_proto.RilUusDcs\x12\x12\n\nuus_length\x18\x03 \x01(\x05\x12\x10\n\x08uus_data\x18\x04 \x01(\t\"\xa5\x02\n\x07RilCall\x12&\n\x05state\x18\x01 \x01(\x0e\x32\x17.ril_proto.RilCallState\x12\r\n\x05index\x18\x02 \x01(\x05\x12\x0b\n\x03toa\x18\x03 \x01(\x05\x12\x0f\n\x07is_mpty\x18\x04 \x01(\x08\x12\r\n\x05is_mt\x18\x05 \x01(\x08\x12\x0b\n\x03\x61ls\x18\x06 \x01(\x05\x12\x10\n\x08is_voice\x18\x07 \x01(\x08\x12\x18\n\x10is_voice_privacy\x18\x08 \x01(\x08\x12\x0e\n\x06number\x18\t \x01(\t\x12\x1b\n\x13number_presentation\x18\n \x01(\x05\x12\x0c\n\x04name\x18\x0b \x01(\t\x12\x19\n\x11name_presentation\x18\x0c \x01(\x05\x12\'\n\x08uus_info\x18\r \x01(\x0b\x32\x15.ril_proto.RilUusInfo\"F\n\x13RILGWSignalStrength\x12\x17\n\x0fsignal_strength\x18\x01 \x01(\x05\x12\x16\n\x0e\x62it_error_rate\x18\x02 \x01(\x05\"2\n\x15RILCDMASignalStrength\x12\x0b\n\x03\x64\x62m\x18\x01 \x01(\x05\x12\x0c\n\x04\x65\x63io\x18\x02 \x01(\x05\"N\n\x15RILEVDOSignalStrength\x12\x0b\n\x03\x64\x62m\x18\x01 \x01(\x05\x12\x0c\n\x04\x65\x63io\x18\x02 \x01(\x05\x12\x1a\n\x12signal_noise_ratio\x18\x03 \x01(\x05\"\x1d\n\nRspStrings\x12\x0f\n\x07strings\x18\x01 \x03(\t\"\x1f\n\x0bRspIntegers\x12\x10\n\x08integers\x18\x01 \x03(\x05\"@\n\x0fRspGetSimStatus\x12-\n\x0b\x63\x61rd_status\x18\x01 \x02(\x0b\x32\x18.ril_proto.RilCardStatus\"\x1d\n\x0eReqEnterSimPin\x12\x0b\n\x03pin\x18\x01 \x02(\t\"+\n\x0eRspEnterSimPin\x12\x19\n\x11retries_remaining\x18\x01 \x02(\x05\"7\n\x12RspGetCurrentCalls\x12!\n\x05\x63\x61lls\x18\x01 \x03(\x0b\x32\x12.ril_proto.RilCall\"Q\n\x07ReqDial\x12\x0f\n\x07\x61\x64\x64ress\x18\x01 \x01(\t\x12\x0c\n\x04\x63lir\x18\x02 \x01(\x05\x12\'\n\x08uus_info\x18\x03 \x01(\x0b\x32\x15.ril_proto.RilUusInfo\"%\n\tReqHangUp\x12\x18\n\x10\x63onnection_index\x18\x01 \x02(\x05\"4\n\x14RspLastCallFailCause\x12\x1c\n\x14last_call_fail_cause\x18\x01 \x02(\x05\"\xcc\x01\n\x11RspSignalStrength\x12\x39\n\x11gw_signalstrength\x18\x01 \x01(\x0b\x32\x1e.ril_proto.RILGWSignalStrength\x12=\n\x13\x63\x64ma_signalstrength\x18\x02 \x01(\x0b\x32 .ril_proto.RILCDMASignalStrength\x12=\n\x13\x65vdo_signalstrength\x18\x03 \x01(\x0b\x32 .ril_proto.RILEVDOSignalStrength\"O\n\x0bRspOperator\x12\x16\n\x0elong_alpha_ons\x18\x01 \x01(\t\x12\x17\n\x0fshort_alpha_ons\x18\x02 \x01(\t\x12\x0f\n\x07mcc_mnc\x18\x03 \x01(\t\"&\n\x15ReqSeparateConnection\x12\r\n\x05index\x18\x01 \x02(\x05\"\x1b\n\nReqSetMute\x12\r\n\x05state\x18\x01 \x02(\x08\"\x1f\n\x0eReqScreenState\x12\r\n\x05state\x18\x01 \x02(\x08*\xaf\x02\n\nRadioState\x12\x12\n\x0eRADIOSTATE_OFF\x10\x00\x12\x1a\n\x16RADIOSTATE_UNAVAILABLE\x10\x01\x12\x1c\n\x18RADIOSTATE_SIM_NOT_READY\x10\x02\x12#\n\x1fRADIOSTATE_SIM_LOCKED_OR_ABSENT\x10\x03\x12\x18\n\x14RADIOSTATE_SIM_READY\x10\x04\x12\x1d\n\x19RADIOSTATE_RUIM_NOT_READY\x10\x05\x12\x19\n\x15RADIOSTATE_RUIM_READY\x10\x06\x12$\n RADIOSTATE_RUIM_LOCKED_OR_ABSENT\x10\x07\x12\x1b\n\x17RADIOSTATE_NV_NOT_READY\x10\x08\x12\x17\n\x13RADIOSTATE_NV_READY\x10\t*P\n\x0cRilCardState\x12\x14\n\x10\x43\x41RDSTATE_ABSENT\x10\x00\x12\x15\n\x11\x43\x41RDSTATE_PRESENT\x10\x01\x12\x13\n\x0f\x43\x41RDSTATE_ERROR\x10\x02*\xf1\x06\n\x10RilPersoSubstate\x12\x19\n\x15PERSOSUBSTATE_UNKNOWN\x10\x00\x12\x1d\n\x19PERSOSUBSTATE_IN_PROGRESS\x10\x01\x12\x17\n\x13PERSOSUBSTATE_READY\x10\x02\x12\x1d\n\x19PERSOSUBSTATE_SIM_NETWORK\x10\x03\x12$\n PERSOSUBSTATE_SIM_NETWORK_SUBSET\x10\x04\x12\x1f\n\x1bPERSOSUBSTATE_SIM_CORPORATE\x10\x05\x12&\n\"PERSOSUBSTATE_SIM_SERVICE_PROVIDER\x10\x06\x12\x19\n\x15PERSOSUBSTATE_SIM_SIM\x10\x07\x12!\n\x1dPERSOSUBSTATE_SIM_NETWORK_PUK\x10\x08\x12(\n$PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK\x10\t\x12#\n\x1fPERSOSUBSTATE_SIM_CORPORATE_PUK\x10\n\x12*\n&PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK\x10\x0b\x12\x1d\n\x19PERSOSUBSTATE_SIM_SIM_PUK\x10\x0c\x12\x1f\n\x1bPERSOSUBSTATE_RUIM_NETWORK1\x10\r\x12\x1f\n\x1bPERSOSUBSTATE_RUIM_NETWORK2\x10\x0e\x12\x1b\n\x17PERSOSUBSTATE_RUIM_HRPD\x10\x0f\x12 \n\x1cPERSOSUBSTATE_RUIM_CORPORATE\x10\x10\x12\'\n#PERSOSUBSTATE_RUIM_SERVICE_PROVIDER\x10\x11\x12\x1b\n\x17PERSOSUBSTATE_RUIM_RUIM\x10\x12\x12#\n\x1fPERSOSUBSTATE_RUIM_NETWORK1_PUK\x10\x13\x12#\n\x1fPERSOSUBSTATE_RUIM_NETWORK2_PUK\x10\x14\x12\x1f\n\x1bPERSOSUBSTATE_RUIM_HRPD_PUK\x10\x15\x12$\n PERSOSUBSTATE_RUIM_CORPORATE_PUK\x10\x16\x12+\n\'PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK\x10\x17\x12\x1f\n\x1bPERSOSUBSTATE_RUIM_RUIM_PUK\x10\x18*\x93\x01\n\x0bRilAppState\x12\x14\n\x10\x41PPSTATE_UNKNOWN\x10\x00\x12\x15\n\x11\x41PPSTATE_DETECTED\x10\x01\x12\x10\n\x0c\x41PPSTATE_PIN\x10\x02\x12\x10\n\x0c\x41PPSTATE_PUK\x10\x03\x12\x1f\n\x1b\x41PPSTATE_SUBSCRIPTION_PERSO\x10\x04\x12\x12\n\x0e\x41PPSTATE_READY\x10\x05*\xbd\x01\n\x0bRilPinState\x12\x14\n\x10PINSTATE_UNKNOWN\x10\x00\x12!\n\x1dPINSTATE_ENABLED_NOT_VERIFIED\x10\x01\x12\x1d\n\x19PINSTATE_ENABLED_VERIFIED\x10\x02\x12\x15\n\x11PINSTATE_DISABLED\x10\x03\x12\x1c\n\x18PINSTATE_ENABLED_BLOCKED\x10\x04\x12!\n\x1dPINSTATE_ENABLED_PERM_BLOCKED\x10\x05*h\n\nRilAppType\x12\x13\n\x0f\x41PPTYPE_UNKNOWN\x10\x00\x12\x0f\n\x0b\x41PPTYPE_SIM\x10\x01\x12\x10\n\x0c\x41PPTYPE_USIM\x10\x02\x12\x10\n\x0c\x41PPTYPE_RUIM\x10\x03\x12\x10\n\x0c\x41PPTYPE_CSIM\x10\x04*\xce\x01\n\nRilUusType\x12\x18\n\x14RILUUSTYPE1_IMPLICIT\x10\x00\x12\x18\n\x14RILUUSTYPE1_REQUIRED\x10\x01\x12\x1c\n\x18RILUUSTYPE1_NOT_REQUIRED\x10\x02\x12\x18\n\x14RILUUSTYPE2_REQUIRED\x10\x03\x12\x1c\n\x18RILUUSTYPE2_NOT_REQUIRED\x10\x04\x12\x18\n\x14RILUUSTYPE3_REQUIRED\x10\x05\x12\x1c\n\x18RILUUSTYPE3_NOT_REQUIRED\x10\x06*p\n\tRilUusDcs\x12\x11\n\rRILUUSDCS_USP\x10\x00\x12\x14\n\x10RILUUSDCS_OSIHLP\x10\x01\x12\x12\n\x0eRILUUSDCS_X244\x10\x02\x12\x12\n\x0eRILUUSDCS_RMCF\x10\x03\x12\x12\n\x0eRILUUSDCS_IA5c\x10\x04*\x99\x01\n\x0cRilCallState\x12\x14\n\x10\x43\x41LLSTATE_ACTIVE\x10\x00\x12\x15\n\x11\x43\x41LLSTATE_HOLDING\x10\x01\x12\x15\n\x11\x43\x41LLSTATE_DIALING\x10\x02\x12\x16\n\x12\x43\x41LLSTATE_ALERTING\x10\x03\x12\x16\n\x12\x43\x41LLSTATE_INCOMING\x10\x04\x12\x15\n\x11\x43\x41LLSTATE_WAITING\x10\x05\x42\x33\n(com.android.internal.telephony.ril_protoB\x07RilCmds')
 
 _RADIOSTATE = descriptor.EnumDescriptor(
   name='RadioState',
@@ -61,8 +61,8 @@ _RADIOSTATE = descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=1985,
-  serialized_end=2288,
+  serialized_start=2039,
+  serialized_end=2342,
 )
 
 
@@ -87,8 +87,8 @@ _RILCARDSTATE = descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=2290,
-  serialized_end=2370,
+  serialized_start=2344,
+  serialized_end=2424,
 )
 
 
@@ -201,8 +201,8 @@ _RILPERSOSUBSTATE = descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=2373,
-  serialized_end=3254,
+  serialized_start=2427,
+  serialized_end=3308,
 )
 
 
@@ -239,8 +239,8 @@ _RILAPPSTATE = descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=3257,
-  serialized_end=3404,
+  serialized_start=3311,
+  serialized_end=3458,
 )
 
 
@@ -277,8 +277,8 @@ _RILPINSTATE = descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=3407,
-  serialized_end=3596,
+  serialized_start=3461,
+  serialized_end=3650,
 )
 
 
@@ -311,8 +311,8 @@ _RILAPPTYPE = descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=3598,
-  serialized_end=3702,
+  serialized_start=3652,
+  serialized_end=3756,
 )
 
 
@@ -353,8 +353,8 @@ _RILUUSTYPE = descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=3705,
-  serialized_end=3911,
+  serialized_start=3759,
+  serialized_end=3965,
 )
 
 
@@ -387,8 +387,8 @@ _RILUUSDCS = descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=3913,
-  serialized_end=4025,
+  serialized_start=3967,
+  serialized_end=4079,
 )
 
 
@@ -425,8 +425,8 @@ _RILCALLSTATE = descriptor.EnumDescriptor(
   ],
   containing_type=None,
   options=None,
-  serialized_start=4028,
-  serialized_end=4181,
+  serialized_start=4082,
+  serialized_end=4235,
 )
 
 
@@ -1157,6 +1157,34 @@ _REQHANGUP = descriptor.Descriptor(
 )
 
 
+_RSPLASTCALLFAILCAUSE = descriptor.Descriptor(
+  name='RspLastCallFailCause',
+  full_name='ril_proto.RspLastCallFailCause',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    descriptor.FieldDescriptor(
+      name='last_call_fail_cause', full_name='ril_proto.RspLastCallFailCause.last_call_fail_cause', index=0,
+      number=1, type=5, cpp_type=1, label=2,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  extension_ranges=[],
+  serialized_start=1594,
+  serialized_end=1646,
+)
+
+
 _RSPSIGNALSTRENGTH = descriptor.Descriptor(
   name='RspSignalStrength',
   full_name='ril_proto.RspSignalStrength',
@@ -1194,8 +1222,8 @@ _RSPSIGNALSTRENGTH = descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1595,
-  serialized_end=1799,
+  serialized_start=1649,
+  serialized_end=1853,
 )
 
 
@@ -1236,8 +1264,8 @@ _RSPOPERATOR = descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1801,
-  serialized_end=1880,
+  serialized_start=1855,
+  serialized_end=1934,
 )
 
 
@@ -1264,8 +1292,8 @@ _REQSEPARATECONNECTION = descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1882,
-  serialized_end=1920,
+  serialized_start=1936,
+  serialized_end=1974,
 )
 
 
@@ -1292,8 +1320,8 @@ _REQSETMUTE = descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1922,
-  serialized_end=1949,
+  serialized_start=1976,
+  serialized_end=2003,
 )
 
 
@@ -1320,8 +1348,8 @@ _REQSCREENSTATE = descriptor.Descriptor(
   options=None,
   is_extendable=False,
   extension_ranges=[],
-  serialized_start=1951,
-  serialized_end=1982,
+  serialized_start=2005,
+  serialized_end=2036,
 )
 
 
@@ -1434,6 +1462,12 @@ class ReqHangUp(message.Message):
   
   # @@protoc_insertion_point(class_scope:ril_proto.ReqHangUp)
 
+class RspLastCallFailCause(message.Message):
+  __metaclass__ = reflection.GeneratedProtocolMessageType
+  DESCRIPTOR = _RSPLASTCALLFAILCAUSE
+  
+  # @@protoc_insertion_point(class_scope:ril_proto.RspLastCallFailCause)
+
 class RspSignalStrength(message.Message):
   __metaclass__ = reflection.GeneratedProtocolMessageType
   DESCRIPTOR = _RSPSIGNALSTRENGTH
index cc19603..e64b96c 100644 (file)
@@ -161,6 +161,24 @@ ctrlServerDispatchTable[CTRL_CMD_SET_MT_CALL] = { // 1001
     'components' : [simulatedRadioWorker],
     'schemaName' : 'CtrlReqSetMTCall',
 };
+ctrlServerDispatchTable[CTRL_CMD_HANGUP_CONN_REMOTE] = { // 1002
+    'components' : [simulatedRadioWorker],
+    'schemaName' : 'CtrlHangupConnRemote',
+};
+ctrlServerDispatchTable[CTRL_CMD_SET_CALL_TRANSITION_FLAG] = { // 1003
+    'components' : [simulatedRadioWorker],
+    'schemaName' : 'CtrlSetCallTransitionFlag',
+};
+ctrlServerDispatchTable[CTRL_CMD_SET_CALL_ALERT] = { // 1004
+    'components' : [simulatedRadioWorker],
+};
+ctrlServerDispatchTable[CTRL_CMD_SET_CALL_ACTIVE] = { // 1005
+    'components' : [simulatedRadioWorker],
+};
+ctrlServerDispatchTable[CTRL_CMD_ADD_DIALING_CALL] = { // 1006
+    'components' : [simulatedRadioWorker],
+    'schemaName' : 'CtrlReqAddDialingCall',
+};
 
 /**
  * Optional tests
index ed388f2..f7c4901 100644 (file)
@@ -254,6 +254,9 @@ dispatchTable[RIL_REQUEST_SWITCH_WAITING_OR_HOLDING_AND_ACTIVE] = { // 15
 dispatchTable[RIL_REQUEST_CONFERENCE] = { // 16
     'components' : [simulatedRadioWorker],
 };
+dispatchTable[RIL_REQUEST_LAST_CALL_FAIL_CAUSE] = { // 18
+    'components' : [simulatedRadioWorker],
+};
 dispatchTable[RIL_REQUEST_SIGNAL_STRENGTH]  = { // 19
     'components' : [simulatedRadioWorker],
 };
index 4b72899..82461d5 100644 (file)
@@ -141,6 +141,30 @@ var RADIOSTATE_NV_NOT_READY = 8;          /* Radio is on, but the NV interface i
 var RADIOSTATE_NV_READY = 9;              /* Radio is on and the NV interface is available */
 
 /**
+ * Last call fail cause
+ */
+var CALL_FAIL_UNOBTAINABLE_NUMBER = 1;
+var CALL_FAIL_NORMAL = 16;
+var CALL_FAIL_BUSY = 17;
+var CALL_FAIL_CONGESTION = 34;
+var CALL_FAIL_ACM_LIMIT_EXCEEDED = 68;
+var CALL_FAIL_CALL_BARRED = 240;
+var CALL_FAIL_FDN_BLOCKED = 241;
+var CALL_FAIL_IMSI_UNKNOWN_IN_VLR = 242;
+var CALL_FAIL_IMEI_NOT_ACCEPTED = 243;
+var CALL_FAIL_CDMA_LOCKED_UNTIL_POWER_CYCLE = 1000;
+var CALL_FAIL_CDMA_DROP = 1001;
+var CALL_FAIL_CDMA_INTERCEPT = 1002;
+var CALL_FAIL_CDMA_REORDER = 1003;
+var CALL_FAIL_CDMA_SO_REJECT = 1004;
+var CALL_FAIL_CDMA_RETRY_ORDER = 1005;
+var CALL_FAIL_CDMA_ACCESS_FAILURE = 1006;
+var CALL_FAIL_CDMA_PREEMPTED = 1007;
+var CALL_FAIL_CDMA_NOT_EMERGENCY = 1008; /* For non-emergency number dialed during emergency callback mode */
+var CALL_FAIL_CDMA_ACCESS_BLOCKED = 1009; /* CDMA network access probes blocked */
+var CALL_FAIL_ERROR_UNSPECIFIED = 0xffff;
+
+/**
  * RIL requests
  */
 var RIL_REQUEST_GET_SIM_STATUS = 1
@@ -294,8 +318,13 @@ var CTRL_CMD_SET_RADIO_STATE = 2
  * Control commands in ctrl.proto that will be dispatched to
  * simulatedRadio or simulatedIcc
  */
-var CTRL_CMD_DISPATH_BASE    = 1000
-var CTRL_CMD_SET_MT_CALL     = 1001
+var CTRL_CMD_DISPATH_BASE             = 1000
+var CTRL_CMD_SET_MT_CALL              = 1001
+var CTRL_CMD_HANGUP_CONN_REMOTE       = 1002
+var CTRL_CMD_SET_CALL_TRANSITION_FLAG = 1003
+var CTRL_CMD_SET_CALL_ALERT           = 1004
+var CTRL_CMD_SET_CALL_ACTIVE          = 1005
+var CTRL_CMD_ADD_DIALING_CALL         = 1006
 
 /* status for control commands, defined in ctrl.proto */
 var CTRL_STATUS_OK = 0
index 87281c7..717588a 100644 (file)
@@ -107,6 +107,11 @@ function Radio() {
     // Flag to denote whether an incoming/waiting call is answered
     var incomingCallIsAnswered = false;
 
+    // Call transition flag
+    var callTransitionFlag = false;  // default to auto-transition
+
+    var lastCallFailCause = 0;
+
     // Array of "active" calls
     var calls = Array(maxNumberActiveCalls + 1);
 
@@ -159,6 +164,23 @@ function Radio() {
         return c;
     }
 
+    /**
+     * @return the first call that is in the given state
+     */
+    this.getCallIdByState = function(callState) {
+        if ((callState < CALLSTATE_ACTIVE) || (callState > CALLSTATE_WAITING)) {
+            return null;
+        }
+        for (var i = 0; i < calls.length; i++) {
+            if (typeof calls[i] != 'undefined') {
+                if (calls[i].state == callState) {
+                    return i;
+                }
+            }
+        }
+        return null;
+    }
+
     /** Add an active call
      *
      * @return a RilCall or null if too many active calls.
@@ -240,6 +262,27 @@ function Radio() {
     }
 
     /**
+     * Count number of calls in the given state
+     *
+     * @param callState is the give state
+     */
+    this.countCallsInState = function(callState) {
+        var count = 0;
+        if ((callState < CALLSTATE_ACTIVE) || (callState > CALLSTATE_WAITING)) {
+            // not a valid call state
+            return null;
+        }
+        for (var i = 0; i < calls.length; i++) {
+            if (typeof calls[i] != 'undefined') {
+                if (calls[i].state == callState) {
+                    count++;
+                }
+            }
+        }
+        return count;
+    }
+
+    /**
      * Print signal strength
      */
     this.printSignalStrength = function() {
@@ -339,18 +382,21 @@ function Radio() {
                          'callType' : OUTGOING,
                          'callIndex' : newCall.index,
                          'nextState' : CALLSTATE_DIALING});
-        // Update call state to alerting after 1 second
-       simulatedRadioWorker.addDelayed(
-                        {'reqNum' : CMD_CALL_STATE_CHANGE,
-                         'callType' : OUTGOING,
-                         'callIndex' : newCall.index,
-                         'nextState' : CALLSTATE_ALERTING}, 1000);
-       // Update call state to active after 2 seconds
-        simulatedRadioWorker.addDelayed(
-                        {'reqNum' : CMD_CALL_STATE_CHANGE,
-                         'callType' : OUTGOING,
-                         'callIndex': newCall.index,
-                         'nextState' : CALLSTATE_ACTIVE}, 2000);
+        if (!callTransitionFlag) {
+            // for auto transition
+            // Update call state to alerting after 1 second
+            simulatedRadioWorker.addDelayed(
+                {'reqNum' : CMD_CALL_STATE_CHANGE,
+                 'callType' : OUTGOING,
+                 'callIndex' : newCall.index,
+                 'nextState' : CALLSTATE_ALERTING}, 1000);
+            // Update call state to active after 2 seconds
+            simulatedRadioWorker.addDelayed(
+                {'reqNum' : CMD_CALL_STATE_CHANGE,
+                 'callType' : OUTGOING,
+                 'callIndex': newCall.index,
+                 'nextState' : CALLSTATE_ACTIVE}, 2000);
+        }
         return result;
     }
 
@@ -551,6 +597,23 @@ function Radio() {
     }
 
     /**
+     * Handle RIL_REQUEST_LAST_CALL_FAIL_CAUSE
+     *
+     * @param req is the request
+     */
+    this.rilRequestLastCallFailCause = function(req) {
+        print('Radio: rilRequestLastCallFailCause E');
+
+        var rsp = new Object();
+        rsp.integers = new Array();
+        rsp.integers[0] = lastCallFailCause;
+
+        result.responseProtobuf = rilSchema[packageNameAndSeperator +
+                                            'RspIntegers'].serialize(rsp);
+        return result;
+    }
+
+    /**
      * Handle RIL_REQUEST_SIGNAL_STRENGTH
      *
      * @param req is the Request
@@ -916,14 +979,147 @@ function Radio() {
 
          result.rilErrCode = CTRL_STATUS_OK;
          return result;
-     }
+    }
+
+    /**
+     * Handle control command CTRL_CMD_HANGUP_CONN_REMOTE
+     *   hangup the connection for the given failure cause
+     *
+     *@param req is the control request
+     */
+    this.ctrlServerCmdHangupConnRemote = function(req) {    // 1002
+        print('ctrlServerCmdHangupConnRemote: req.data.connectionId=' + req.data.connectionId +
+              ' req.data.callFailCause' + req.data.callFailCause);
+
+        var connection = req.data.connectionId;
+        var failureCause = req.data.callFailCause;
+
+        this.printCalls(calls);
+        var hangupCall = this.removeCall(connection);
+        if (hangupCall == null) {
+            print('ctrlServerCmdHangupConnRemote: connection id is required.');
+            result.rilErrCode = CTRL_STATUS_ERR;
+            return result;
+        } else {
+            // for incoming call, stop sending call ring
+            if ((hangupCall.state == CALLSTATE_INCOMING) ||
+                (hangupCall.state == CALLSTATE_WAITING)) {
+                incomingCallIsAnswered = true;
+            }
+        }
+        this.printCalls(calls);
+        lastCallFailCause = failureCause;
+
+        // send out call state changed response
+        simulatedRadioWorker.add(
+            {'reqNum' : CMD_UNSOL_CALL_STATE_CHANGED});
+
+        result.rilErrCode = CTRL_STATUS_OK;
+        return result;
+    }
+
+    /**
+     * Set call transition flag
+     */
+    this.ctrlServerCmdSetCallTransitionFlag = function(req) {  // 1003
+        print('ctrlServerCmdSetCallTransitionFlag: flag=' + req.data.flag);
+
+        callTransitionFlag = req.data.flag;
+        result.rilErrCode = CTRL_STATUS_OK;
+        return result;
+    }
+
+    /**
+     * Set the dialing call to alert
+     */
+    this.ctrlServerCmdSetCallAlert = function(req) {    // 1004
+        print('ctrlServerCmdSetCallAlert: E');
+
+        if (callTransitionFlag == false) {
+            print('ctrlServerCmdSetCallAlert: need to set the flag first');
+            result.rilErrCode = CTRL_STATUS_ERR;
+            return result;
+        }
+        if (numberActiveCalls <= 0) {
+            print('ctrlServerCmdSetCallAlert: no active calls');
+            result.rilErrCode = CTRL_STATUS_ERR;
+            return result;
+        }
+        var dialingCalls = this.countCallsInState(CALLSTATE_DIALING);
+        var index = this.getCallIdByState(CALLSTATE_DIALING);
+        if ((dialingCalls == 1) && (index != null)) {
+            calls[index].state = CALLSTATE_ALERTING;
+        } else {
+            // if there 0 or more than one call in dialing state, return error
+            print('ctrlServerCmdSetCallAlert: no valid calls in dialing state');
+            result.rilErrCode = CTRL_STATUS_ERR;
+            return result;
+        }
+        // send unsolicited call state change response
+        simulatedRadioWorker.add(
+            {'reqNum' : CMD_UNSOL_CALL_STATE_CHANGED});
+
+        result.rilErrCode = CTRL_STATUS_OK;
+        return result;
+    }
+
+    /**
+     * Set the alserting call to active
+     */
+    this.ctrlServerCmdSetCallActive = function(req) {   // 1005
+        print('ctrlServerCmdSetCallActive: E');
+
+        if (callTransitionFlag == false) {
+            print('ctrlServerCmdSetCallActive: need to set the flag firt');
+            result.rilErrCode = CTRL_STATUS_ERR;
+            return result;
+        }
+        if (numberActiveCalls <= 0) {
+            print('ctrlServerCmdSetCallActive: no active calls');
+            result.rilErrCode = CTRL_STATUS_ERR;
+            return result;
+        }
+        var alertingCalls = this.countCallsInState(CALLSTATE_ALERTING);
+        var index = this.getCallIdByState(CALLSTATE_ALERTING);
+        if ((alertingCalls == 1) && (index != null)) {
+            calls[index].state = CALLSTATE_ACTIVE;
+        } else {
+            print('ctrlServerCmdSetCallActive: no valid calls in alert state');
+            result.rilErrCode = CTRL_STATUS_ERR;
+            return result;
+        }
+        // send out unsolicited call state change response
+        simulatedRadioWorker.add(
+            {'reqNum' : CMD_UNSOL_CALL_STATE_CHANGED});
+
+        result.rilErrCode = CTRL_STATUS_OK;
+        return result;
+    }
+
+    /**
+     * Add a dialing call
+     */
+    this.ctrlServerCmdAddDialingCall = function(req) {   // 1006
+        print('ctrlServerCmdAddDialingCall: E');
+
+        var phoneNumber = req.data.phoneNumber;
+        var dialingCalls = this.countCallsInState(CALLSTATE_DIALING);
+        if (dialingCalls == 0) {
+            this.addCall(CALLSTATE_DIALING, phoneNumber, '');
+            result.rilErrCode = CTRL_STATUS_OK;
+        } else {
+            print('ctrlServerCmdAddDialingCall: add dialing call failed');
+            result.rilErrCode = CTRL_STATUS_ERR;
+        }
+        return result;
+    }
 
     /**
      * Process the request by dispatching to the request handlers
      */
     this.process = function(req) {
         try {
-            //print('Radio E: req.reqNum=' + req.reqNum + ' req.token=' + req.token);
+            print('Radio E: req.reqNum=' + req.reqNum + ' req.token=' + req.token);
 
             // Assume the result will be true, successful and nothing to return
             result.sendResponse = true;
@@ -949,11 +1145,11 @@ function Radio() {
             }
             if (result.sendResponse) {
                 if (isCtrlServerDispatchCommand(req.reqNum)) {
-                    print('Command ' + req.reqNum + ' is a control server command');
+                    //print('Command ' + req.reqNum + ' is a control server command');
                     sendCtrlRequestComplete(result.rilErrCode, req.reqNum,
                       req.token, result.responseProtobuf);
                 } else {
-                    print('Request ' + req.reqNum + ' is a ril request');
+                    //print('Request ' + req.reqNum + ' is a ril request');
                     sendRilRequestComplete(result.rilErrCode, req.reqNum,
                       req.token, result.responseProtobuf);
                 }
@@ -984,6 +1180,8 @@ function Radio() {
                 this.rilRequestSwitchWaitingOrHoldingAndActive;
     this.radioDispatchTable[RIL_REQUEST_CONFERENCE] = // 16
                 this.rilRequestConference;
+    this.radioDispatchTable[RIL_REQUEST_LAST_CALL_FAIL_CAUSE] = // 18
+                this.rilRequestLastCallFailCause;
     this.radioDispatchTable[RIL_REQUEST_SIGNAL_STRENGTH] = // 19
                 this.rilRequestSignalStrength;
     this.radioDispatchTable[RIL_REQUEST_REGISTRATION_STATE] = // 20
@@ -1007,6 +1205,16 @@ function Radio() {
 
     this.radioDispatchTable[CTRL_CMD_SET_MT_CALL] = //1001
                 this.ctrlServerCmdStartInComingCall;
+    this.radioDispatchTable[CTRL_CMD_HANGUP_CONN_REMOTE] = //1002
+                this.ctrlServerCmdHangupConnRemote;
+    this.radioDispatchTable[CTRL_CMD_SET_CALL_TRANSITION_FLAG] = //1003
+                this.ctrlServerCmdSetCallTransitionFlag;
+    this.radioDispatchTable[CTRL_CMD_SET_CALL_ALERT] =  // 1004
+                this.ctrlServerCmdSetCallAlert;
+    this.radioDispatchTable[CTRL_CMD_SET_CALL_ACTIVE] =  // 1005
+                this.ctrlServerCmdSetCallActive;
+    this.radioDispatchTable[CTRL_CMD_ADD_DIALING_CALL] =  // 1006
+                this.ctrlServerCmdAddDialingCall;
 
     this.radioDispatchTable[CMD_DELAY_TEST] = // 2000
                 this.cmdDelayTest;
@@ -1019,9 +1227,6 @@ function Radio() {
     this.radioDispatchTable[CMD_UNSOL_CALL_RING] = //2004
                 this.cmdUnsolCallRing;
 
-    this.radioDispatchTable[CTRL_CMD_SET_MT_CALL] = //1001
-                this.ctrlServerCmdStartInComingCall;
-
     print('Radio: constructor X');
 }
 
index 30ca6fd..9a5f929 100644 (file)
@@ -13,6 +13,11 @@ enum CtrlCmd {
   CTRL_CMD_GET_RADIO_STATE      = 1;
   CTRL_CMD_SET_RADIO_STATE      = 2;
   CTRL_CMD_SET_MT_CALL          = 1001;
+  CTRL_CMD_HANGUP_CONN_REMOTE   = 1002;
+  CTRL_CMD_SET_CALL_TRANSITION_FLAG = 1003;
+  CTRL_CMD_SET_CALL_ALERT           = 1004;
+  CTRL_CMD_SET_CALL_ACTIVE          = 1005;
+  CTRL_CMD_ADD_DIALING_CALL         = 1006;  // this command is for testing
 }
 
 enum CtrlStatus {
@@ -30,8 +35,24 @@ message CtrlRspRadioState {
   required ril_proto.RadioState state = 1;
 }
 
-// request of creating an incoming call
+// 1001: request of creating an incoming call
 message CtrlReqSetMTCall {
   required string phone_number         = 1;  // Phone number to display
 }
 
+// 1002: request of hangup a connection for the given disconnection cause
+message CtrlHangupConnRemote {
+  required int32 connection_id          = 1; // connection id
+  required int32 call_fail_cause        = 2; // call failure cause
+}
+
+// 1003: set call transition flag: true for controlled transition
+//                                 false for auto-transition
+message CtrlSetCallTransitionFlag {
+  required bool flag                    = 1;
+}
+
+// 1006: Add a dialing call
+message CtrlReqAddDialingCall {
+  required string phone_number          = 1; // phone number
+}
index 206b786..9967204 100644 (file)
@@ -246,6 +246,11 @@ message ReqHangUp {
   required int32 connection_index           = 1;
 }
 
+// 18 response for RIL_REQUEST_LAST_CALL_FAIL_CAUSE
+message RspLastCallFailCause {
+  required int32 last_call_fail_cause       = 1;
+}
+
 // 19 RIL_REQUEST_SIGNAL_STRENGTH response
 message RspSignalStrength {
     optional RILGWSignalStrength   gw_signalstrength   = 1;