Set initial attach apn for LTE network

When mobile register LTE network, APN provided by operators is needed.
If mobile does not have apn information, it could not register LTE network.
To deliver APN information which is used during LTE attach to modem chipset,
setLteAttachProfile() and RIL_REQUEST_SET_LTE_ATTACH_PROFILE command is added.

When Telephony DB is loaded or Telephony DB is changed, follow steps.
1. If preferred default ApnContext exists, this is delivered to modem chipset.
2. If preferred default ApnContext is null, find other ApnContext which can
   handle default type.
3. If other ApnContext which can handle default type does not exist, any other
   ApnContext delivered to modem chipset.

Then modem register LTE network with APN information delivered from AP.

Bug: 8733613

Change-Id: If84c62cddccf96a531dae0527ed1a6592ae76201
Signed-off-by: Seonju Oh <seonju.oh@lge.com>
Signed-off-by: Hyejin Kim <hyejin.kim@lge.com>
Signed-off-by: Sungmin Choi <sungmin.choi@lge.com>
diff --git a/include/telephony/ril.h b/include/telephony/ril.h
index 68656fa..1da4d10 100644
--- a/include/telephony/ril.h
+++ b/include/telephony/ril.h
@@ -3482,6 +3482,20 @@
  */
 #define RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE 110
 
+/**
+ * RIL_REQUEST_SET_INITIAL_ATTACH_APN
+ *
+ * Set an apn to initial attach network
+ * "response" is NULL
+ *
+ * Valid errors:
+ *  SUCCESS
+ *  RADIO_NOT_AVAILABLE (radio resetting)
+ *  GENERIC_FAILURE
+ *  SUBSCRIPTION_NOT_AVAILABLE
+ */
+#define RIL_REQUEST_SET_INITIAL_ATTACH_APN 111
+
 /***********************************************************************/
 
 
@@ -4040,6 +4054,14 @@
     RIL_GetVersion getVersion;
 } RIL_RadioFunctions;
 
+typedef struct {
+    char *apn;
+    char *protocol;
+    int authtype;
+    char *username;
+    char *password;
+} RIL_InitialAttachApn;
+
 #ifdef RIL_SHLIB
 struct RIL_Env {
     /**