| // Copyright 2018 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef HERMES_QMI_CONSTANTS_H_ |
| #define HERMES_QMI_CONSTANTS_H_ |
| |
| #include <array> |
| |
| namespace hermes { |
| |
| // This is also defined in qmi_uim.h, but cannot be removed since C does not |
| // have constexpr and the macro must be present in qmi_uim.c. This mimics that |
| // value. |
| constexpr size_t kBufferDataSize = 256; |
| |
| // Constants for opening a libqrtr socket, these are QMI/QRTR specific. |
| constexpr uint8_t kQrtrPort = 0; |
| constexpr uint8_t kQrtrUimService = 11; |
| |
| // TODO(jruthe): Currently, this is a "tag" that's not defined in SGP.22 to |
| // communicate that another packet with a payload must be sent to the eSIM. |
| constexpr uint16_t kGetMoreResponseTag = 0xFFFF; |
| |
| // QMI UIM Info1 tag as specified in SGP.22 ES10b.GetEuiccInfo |
| constexpr uint16_t kEsimInfo1Tag = 0xBF20; |
| |
| // QMI UIM Challenge tag as specified in SGP.22 ES10b.GetEuiccChallenge |
| constexpr uint16_t kEsimChallengeTag = 0xBF2E; |
| |
| // QMI UIM Authenticate Server tag as specified in SGP.22 |
| // ES10b.AuthenticateServer |
| constexpr uint16_t kAuthenticateServerTag = 0xBF38; |
| |
| constexpr uint16_t kPrepareDownloadRequestTag = 0xBF21; |
| |
| // TODO(jruthe): this is currently the slot on Cheza, but Esim should be able to |
| // support different slots in the future. |
| constexpr uint8_t kEsimSlot = 0x01; |
| |
| constexpr uint8_t kInvalidChannel = -1; |
| |
| // QMI UIM command codes as specified by QMI UIM service. |
| enum class QmiUimCommand : uint16_t { |
| kReset = 0x0000, |
| kSendApdu = 0x003B, |
| kLogicalChannel = 0x003F, |
| kOpenLogicalChannel = 0x0042, |
| }; |
| |
| // QMI result codes as specified in SGP.22 2.3.1 |
| enum class EsimQmiResult { |
| kQmiResultSuccess, |
| kQmiResultFailure, |
| }; |
| |
| // This list currently only contains QMI error codes specified for the functions |
| // necessary for LOGICAL_CHANNEL and SEND_APDU QMI commands, and will be |
| // expanded as more QMI integration is added. |
| enum class EsimQmiError { |
| kQmiErrorNone, |
| kQmiErrorInternal, |
| kQmiMalformedMsg, |
| kQmiNoMemory, |
| kQmiInvalidArg, |
| kQmiArgTooLong, |
| kQmiMissingArg, |
| kQmiInsufficientResources, |
| kQmiSimFileNotFound, |
| kQmiAccessDenied, |
| kQmiIncompatibleState, |
| }; |
| |
| } // namespace hermes |
| |
| #endif // HERMES_QMI_CONSTANTS_H_ |