ip_multimedia_subsystem_private_service_v01.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /* Copyright (c) 2020, The Linux Foundation. All rights reserved. */
  3. #ifndef IP_MULTIMEDIA_SUBSYSTEM_PRIVATE_SERVICE_V01_H
  4. #define IP_MULTIMEDIA_SUBSYSTEM_PRIVATE_SERVICE_V01_H
  5. #include <linux/soc/qcom/qmi.h>
  6. #define IMSPRIVATE_SERVICE_ID_V01 0x4D
  7. #define IMSPRIVATE_SERVICE_VERS_V01 0x01
  8. #define QMI_IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_RSP_V01 0x003E
  9. #define QMI_IMS_PRIVATE_SERVICE_WFC_CALL_STATUS_IND_V01 0x0040
  10. #define QMI_IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_REQ_V01 0x003E
  11. #define QMI_IMS_PRIVATE_SERVICE_MT_INVITE_IND_V01 0x003F
  12. #define QMI_IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_RSP_V01 0x0041
  13. #define QMI_IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_REQ_V01 0x0041
  14. #define IMS_PRIVATE_SERVICE_MAX_MT_INVITE_HEADERS_V01 15
  15. #define IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 1024
  16. #define IMS_PRIVATE_SERVICE_MAX_ICCID_LEN_V01 21
  17. enum ims_common_resp_enum_v01 {
  18. IMS_COMMON_RESP_ENUM_MIN_VAL_V01 = INT_MIN,
  19. IMS_COMMON_MSG_NO_ERR_V01 = 0,
  20. IMS_COMMON_MSG_IMS_NOT_READY_V01 = 1,
  21. IMS_COMMON_MSG_FILE_NOT_AVAILABLE_V01 = 2,
  22. IMS_COMMON_MSG_READ_FAILED_V01 = 3,
  23. IMS_COMMON_MSG_WRITE_FAILED_V01 = 4,
  24. IMS_COMMON_MSG_OTHER_INTERNAL_ERR_V01 = 5,
  25. IMS_COMMON_RESP_ENUM_MAX_VAL_V01 = INT_MAX,
  26. };
  27. enum ims_subscription_type_enum_v01 {
  28. IMS_SUBSCRIPTION_TYPE_ENUM_MIN_VAL_V01 = INT_MIN,
  29. IMS_SUBSCRIPTION_TYPE_NONE_V01 = -1,
  30. IMS_SUBSCRIPTION_TYPE_PRIMARY_V01 = 0,
  31. IMS_SUBSCRIPTION_TYPE_SECONDARY_V01 = 1,
  32. IMS_SUBSCRIPTION_TYPE_TERTIARY_V01 = 2,
  33. IMS_SUBSCRIPTION_TYPE_ENUM_MAX_VAL_V01 = INT_MAX,
  34. };
  35. enum wfc_media_quality_v01 {
  36. WFC_MEDIA_QUALITY_MIN_VAL_V01 = INT_MIN,
  37. WFC_MEDIA_QUAL_NOT_AVAILABLE_V01 = 0,
  38. WFC_MEDIA_QUAL_BAD_V01 = 1,
  39. WFC_MEDIA_QUAL_GOOD_V01 = 2,
  40. WFC_MEDIA_QUAL_EXCELLENT_V01 = 3,
  41. WFC_MEDIA_QUALITY_MAX_VAL_V01 = INT_MAX,
  42. };
  43. struct ims_private_service_header_value_v01 {
  44. char header[IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1];
  45. char value[IMS_PRIVATE_SERVICE_HEADER_STR_LEN_V01 + 1];
  46. };
  47. struct ims_private_service_subscribe_for_indications_req_msg_v01 {
  48. u8 mt_invite_valid;
  49. u8 mt_invite;
  50. u8 wfc_call_status_valid;
  51. u8 wfc_call_status;
  52. };
  53. #define IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_REQ_MSG_V01_MAX_MSG_LEN 8
  54. extern struct qmi_elem_info
  55. ims_private_service_subscribe_for_indications_req_msg_v01_ei[];
  56. struct ims_private_service_subscribe_for_indications_rsp_msg_v01 {
  57. struct qmi_response_type_v01 resp;
  58. };
  59. #define IMS_PRIVATE_SERVICE_SUBSCRIBE_FOR_INDICATIONS_RSP_MSG_V01_MAX_MSG_LEN 7
  60. extern struct qmi_elem_info
  61. ims_private_service_subscribe_for_indications_rsp_msg_v01_ei[];
  62. struct ims_private_service_mt_invite_ind_msg_v01 {
  63. enum ims_subscription_type_enum_v01 subscription_type;
  64. u8 iccid_valid;
  65. char iccid[IMS_PRIVATE_SERVICE_MAX_ICCID_LEN_V01 + 1];
  66. u8 header_value_list_valid;
  67. u32 header_value_list_len;
  68. struct ims_private_service_header_value_v01
  69. header_value_list[IMS_PRIVATE_SERVICE_MAX_MT_INVITE_HEADERS_V01];
  70. };
  71. #define IMS_PRIVATE_SERVICE_MT_INVITE_IND_MSG_V01_MAX_MSG_LEN 30815
  72. extern struct qmi_elem_info ims_private_service_mt_invite_ind_msg_v01_ei[];
  73. struct ims_private_service_wfc_call_status_ind_msg_v01 {
  74. u8 wfc_call_active;
  75. u8 all_wfc_calls_held_valid;
  76. u8 all_wfc_calls_held;
  77. u8 is_wfc_emergency_valid;
  78. u8 is_wfc_emergency;
  79. u8 twt_ims_start_valid;
  80. u64 twt_ims_start;
  81. u8 twt_ims_int_valid;
  82. u16 twt_ims_int;
  83. u8 media_quality_valid;
  84. enum wfc_media_quality_v01 media_quality;
  85. };
  86. #define IMS_PRIVATE_SERVICE_WFC_CALL_STATUS_IND_MSG_V01_MAX_MSG_LEN 35
  87. extern struct qmi_elem_info
  88. ims_private_service_wfc_call_status_ind_msg_v01_ei[];
  89. struct ims_private_service_wfc_call_twt_config_req_msg_v01 {
  90. u8 twt_sta_start_valid;
  91. u64 twt_sta_start;
  92. u8 twt_sta_int_valid;
  93. u16 twt_sta_int;
  94. u8 twt_sta_upo_valid;
  95. u16 twt_sta_upo;
  96. u8 twt_sta_sp_valid;
  97. u16 twt_sta_sp;
  98. u8 twt_sta_dl_valid;
  99. u16 twt_sta_dl;
  100. u8 twt_sta_config_changed_valid;
  101. u8 twt_sta_config_changed;
  102. };
  103. #define IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_REQ_MSG_V01_MAX_MSG_LEN 35
  104. extern struct qmi_elem_info
  105. ims_private_service_wfc_call_twt_config_req_msg_v01_ei[];
  106. struct ims_private_service_wfc_call_twt_config_rsp_msg_v01 {
  107. struct qmi_response_type_v01 resp;
  108. };
  109. #define IMS_PRIVATE_SERVICE_WFC_CALL_TWT_CONFIG_RSP_MSG_V01_MAX_MSG_LEN 7
  110. extern struct qmi_elem_info
  111. ims_private_service_wfc_call_twt_config_rsp_msg_v01_ei[];
  112. #endif