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端口,服务器维护两条通道和两套证书。这种服务器实现简单,终端侧流程稍麻烦。

adb调节音量

当没屏幕时,通过adb调节音量就有用了:

set:
adb shell media volume --show --stream 0 --set 15
get:
adb shell media volume --stream 0 --get

stream 类型参考

AUDIO_STREAM_VOICE_CALL = 0,
AUDIO_STREAM_SYSTEM = 1,
AUDIO_STREAM_RING = 2,
AUDIO_STREAM_MUSIC = 3,
AUDIO_STREAM_ALARM = 4,
AUDIO_STREAM_NOTIFICATION = 5,
AUDIO_STREAM_BLUETOOTH_SCO = 6,
AUDIO_STREAM_ENFORCED_AUDIBLE = 7,
AUDIO_STREAM_DTMF = 8,
AUDIO_STREAM_TTS = 9,
AUDIO_STREAM_ACCESSIBILITY = 10