Уровень радиоинтерфейса Android (RIL) и / dev / - PullRequest
12 голосов
/ 14 декабря 2011

Кто-нибудь знает, как RIL (/ hardware / reference / reference-ril /) определяет, что монтируется в / dev /, когда запускается радио в основной полосе?

В старых телефонах и в другой документации телефоны GSM используют / dev / smd0.Не все телефоны используют / dev / smd0.Я пытаюсь найти способ выяснить, что монтируется, независимо от типа радиостанции и поставщика.

Если кто-то может конкретно определить, где в / hardware / reference / reference-ril / я могу увидеть, где этоустановлен и откуда он берет информацию при инициализации, это было бы идеально.

Ответы [ 2 ]

7 голосов
/ 07 февраля 2012

RIL в вашей прикладной платформе.

если вы хотите увидеть RIL и реализовать функциональность с использованием командной строки, то это сделано. Есть команда ниже:

void (*RIL_RequestFunc) (int request, void *data, size_t datalen, RIL_Token t);

Я нашел это отсюда:

Вы серьезно относитесь к этому, перейдите по ссылке: RIL Study LInk

Если вы хотите узнать о примере: GIT HUB

0 голосов
/ 04 августа 2015

Это на самом деле зависит от того, какой интерфейс вы используете для подключения. Вы можете использовать интерфейс USB, UART или SPI для подключения верхнего уровня к модему. Параметр, переданный в функцию RIL_Init, определяет устройство, к которому вы пытаетесь подключиться. Если вы хотите точно знать, где это делается, обратитесь к функции RIL_Init в reference-ril.c.

const RIL_RadioFunctions *RIL_Init(const struct RIL_Env *env, int argc, char **argv)

{

int ret;

int fd = -1;
int opt;
pthread_attr_t attr;

s_rilenv = env;

while ( -1 != (opt = getopt(argc, argv, "p:d:s:"))) {
    switch (opt) {
        case 'p':
            s_port = atoi(optarg);
            if (s_port == 0) {
                usage(argv[0]);
                return NULL;
            }
            RLOGI("Opening loopback port %d\n", s_port);
        break;

        case 'd':
            s_device_path = optarg;
            RLOGI("Opening tty device %s\n", s_device_path);
        break;

        case 's':
            s_device_path   = optarg;
            s_device_socket = 1;
            RLOGI("Opening socket %s\n", s_device_path);
        break;

        default:
            usage(argv[0]);
            return NULL;
    }
}

if (s_port < 0 && s_device_path == NULL) {
    usage(argv[0]);
    return NULL;
}

sMdmInfo = calloc(1, sizeof(ModemInfo));
if (!sMdmInfo) {
    RLOGE("Unable to alloc memory for ModemInfo");
    return NULL;
}
pthread_attr_init (&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
ret = pthread_create(&s_tid_mainloop, &attr, mainLoop, NULL);

return &s_callbacks;

}

Надеюсь, теперь все ясно.

...