O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Atribuição de endereço

Resumo

Introdução:

Como há várias interdependências entre as interfaces e como diferentes configurações de dispositivos podem exigir endereços TCP/IP e atribuições de rotas diferentes, foi essencial que a lógica para controlar as atribuições de endereço IP e rota seja consolidada em um único módulo. O WARM serve para o propósito de adicionar e remover corretamente endereços TCP/IP e rotas para Weave interfaces IP relacionadas à medida que essas interfaces transitam de ativas<->inactive.

O WARM foi configurado para ser configurado no momento da compilação, usando HeatProjectConfig.h e WarmConfig.h. O HeatProjectConfig.h precisa incluir com precisão os recursos compatíveis com o dispositivo em que o WARM será executado.

WARM é um módulo portátil que limita sua dependência de como uma pilha TCP/IP e uma interface Thread estão configuradas. Para essa finalidade, o WARM depende de um conjunto de APIs de plataforma que precisa ser implementado pelo integrador de plataformas. Além disso, o integrador de plataformas é responsável por fazer as várias chamadas de API nl::Warm dos pontos de execução apropriados na base de código da plataforma.

Teoria da operação:

A base de código da plataforma chamará nl::Warm API's para anunciar uma mudança de estado de recursos relacionados, como a interface Wi-Fi e a interface Thread. Uma chamada a qualquer uma dessas APIs nl::Warm API's pode resultar em uma chamada de WARM para Platform::RequestListenerActions(). Platform::Request invocarActions() precisa ser implementada para realizar as operações necessárias que chamarão Warm::ChamarActions(). À primeira vista, esse processo pode ser exibido desnecessariamente. Por que o WARM chamaria ChamarActions diretamente? A resposta para essa pergunta é permitir que qualquer tarefa em um sistema multitarefa chame as APIs nl::Warm State Change's e fornecer um mecanismo para que apenas uma tarefa específica chame a API Platform:: API's. Depois de considerar os requisitos da plataforma, o integrador da plataforma pode implementar Implement: Platform::RequestListenerActions() para postar um evento na tarefa apropriada que chamará Warm::ChamarActions(). Se, para uma determinada plataforma, não houver problemas relacionados a várias tarefas, Platform::RequestChamarActions() poderá ser implementado para chamar Warm::ChamarActions() diretamente.

Quando Warm::DaggerActions() é chamado, a lógica do WARM examina o estado atual do sistema e faz as chamadas Platform:: API necessárias para alinhar o endereço e o estado de roteamento com o sistema e o estado de configuração. Essas chamadas são feitas em uma ordem predefinida e, se qualquer uma dessas APIs retornar kPlatformResultInProgress, a execução da lista ordenada será suspensa e encerrada. Além disso, quando uma dessas APIs retorna kPlatformResultInProgress, ela é interpretada como a operação será concluída de forma assíncrona e que a lógica WARM deve aguardar a conclusão da operação. Após a conclusão da operação, o código da plataforma deve chamar Warm::ReportActionComplete(), transmitindo um resultado de kPlatformResultSuccess ou kPlatformResultFailure. Ao receber essa chamada, a lógica de WARM novamente chamará Platform::RequestChamarActions() para reiniciar a execução da lista de ações ordenadas.

Dessa forma, o WARM não requer uma tarefa própria, mas pode depender de outra tarefa para chamar o calor moderado conforme apropriado. Além disso, qualquer tarefa pode chamar uma ou mais APIs de mudança de estado do sistema, simplificando a integração.