i2c_get_clientdata
和 i2c_set_clientdata 配对使用,简单说,就是通过这两个接口来在驱动的回调中获取用户私有的结构体指针。
of_get_gpio说明
/**
- of_get_gpio() - Get a GPIO number to use with GPIO API
- @np: device node to get GPIO from
- @index: index of the GPIO
- Returns GPIO number to use with Linux generic GPIO API, or one of the errno
-
value on the error condition.
/
static inline int of_get_gpio(const struct device_node np, int index)
{
return of_get_gpio_flags(np, index, NULL);
}这个index 表示gpios节点的索引位置,gpios支持多个节点,每个节点由
<gpio_chip gpio_num default_level>
eg:
gpios = <&ap_gpio 145 0 &ap_gpio 144 0>;
安卓默认网络设置
网络制式定义,不局限于安卓。
ro.telephony.default_network
可选值:
/* NETWORK_MODE_* See ril.h RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE */
int NETWORK_MODE_WCDMA_PREF = 0; /* GSM/WCDMA (WCDMA preferred) */
int NETWORK_MODE_GSM_ONLY = 1; /* GSM only */
int NETWORK_MODE_WCDMA_ONLY = 2; /* WCDMA only */
int NETWORK_MODE_GSM_UMTS = 3; /* GSM/WCDMA (auto mode, according to PRL)
AVAILABLE Application Settings menu*/
int NETWORK_MODE_CDMA = 4; /* CDMA and EvDo (auto mode, according to PRL)
AVAILABLE Application Settings menu*/
int NETWORK_MODE_CDMA_NO_EVDO = 5; /* CDMA only */
int NETWORK_MODE_EVDO_NO_CDMA = 6; /* EvDo only */
int NETWORK_MODE_GLOBAL = 7; /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
AVAILABLE Application Settings menu*/
int NETWORK_MODE_LTE_CDMA_EVDO = 8; /* LTE, CDMA and EvDo */
int NETWORK_MODE_LTE_GSM_WCDMA = 9; /* LTE, GSM/WCDMA */
int NETWORK_MODE_LTE_CMDA_EVDO_GSM_WCDMA = 10; /* LTE, CDMA, EvDo, GSM/WCDMA */
int NETWORK_MODE_LTE_ONLY = 11; /* LTE Only mode. */
int NETWORK_MODE_LTE_WCDMA = 12; /* LTE/WCDMA */
int NETWORK_MODE_TD_SCDMA_ONLY = 13; /* TD-SCDMA only */
int NETWORK_MODE_TD_SCDMA_WCDMA = 14; /* TD-SCDMA and WCDMA */
int NETWORK_MODE_TD_SCDMA_LTE = 15; /* TD-SCDMA and LTE */
int NETWORK_MODE_TD_SCDMA_GSM = 16; /* TD-SCDMA and GSM */
int NETWORK_MODE_TD_SCDMA_GSM_LTE = 17; /* TD-SCDMA,GSM and LTE */
int NETWORK_MODE_TD_SCDMA_GSM_WCDMA = 18; /* TD-SCDMA, GSM/WCDMA */
int NETWORK_MODE_TD_SCDMA_WCDMA_LTE = 19; /* TD-SCDMA, WCDMA and LTE */
int NETWORK_MODE_TD_SCDMA_GSM_WCDMA_LTE = 20; /* TD-SCDMA, GSM/WCDMA and LTE */
int NETWORK_MODE_TD_SCDMA_CDMA_EVDO_GSM_WCDMA = 21; /*TD-SCDMA,EvDo,CDMA,GSM/WCDMA*/
int NETWORK_MODE_TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA = 22; /* TD-SCDMA/LTE/GSM/WCDMA, CDMA, and EvDo */
嵌入式x509证书过期及更新
嵌入式中,我们可以通过x509证书来实现tcp+tls或者https,那么如何处理过期的问题呢?
这个过程对终端都是类似的行为,下载,更新,但是根据服务器实现的技术不同,可以分为以下两种:
- 单通道滚动:整个更新过程,服务器保持同一套ip端口, 新旧证书互斥关系,只有一个工作,当旧证书还剩5-10天时,通过旧证书下载新证书,然后本地替换后,访问原有的ip端口,这种方式要求在临界时间区时,服务器同一套ip端口能支持两套证书工作。服务器实现难度高,终端侧简洁优雅。
- 双通道交替:下载新证书后,按照约定访问新的ip和端口,所有业务走新ip端口,服务器维护两条通道和两套证书。这种服务器实现简单,终端侧流程稍麻烦。