GithubHelp home page GithubHelp logo

zenitheesc / cand Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 47 KB

Daemon service based on the Frameworkd SDK to comunicate via CAN

License: The Unlicense

CMake 76.94% Dockerfile 4.53% Makefile 6.41% C++ 12.12%

cand's People

Contributors

angelobguido avatar mairacanal avatar

Watchers

 avatar

cand's Issues

Adicionar o socket_close ao destrutor da classe proxy do barramento CAN

Motivação
Atualmente é necessário que o programador chame o socket_close como método da classe CAN para que a conexão seja fechada. Contudo, isso pode gerar problemas caso o referido programador esqueça de chamar o socket_close, assim pode-se evitar esse problema adicionando essa função ao destrutor da própria classe.

Objetivo
Adicionar o socket_close ao destrutor da classe proxy do barramento CAN.

Adicionar um método à classe CAN para configuração automática do filtro

Objetivo
Adicionar um método à classe CAN para configuração automática do filtro

Motivação
Para configurar o filtro do CAN faz-se necessário que o programador entenda de como este mesmo funciona. Porém, dentro da organização Zenith um membro já elaborou uma solução para esse problema permitindo que o programador configure o filtro do CAN apenas passando um "array de ids". Essa solução foi implementada para um STM32 Bluepill, mas como o funcionamento do filtro é muito próximo ao funcionamento do filtro do Socket CAN, a solução pode ser facilmente adaptada.

A solução encontra-se no repositório de Drivers da conta zenitheesc que pode ser acessada clicando aqui

Exemplo da feature

CAN canBus("vcan0");

u_int32_t idsArray[] =  {0x0C0, 0x0C1, 0x0C2, 0x0C3, 0x0C4, 0x0C5, 0x0C6, 0x0C7
                        ,0x0D0, 0x0D1, 0x0D2, 0x0D3, 0x0D4
                        ,0x0F0, 0x0F1, 0x0F2, 0x0F3, 0x0F4, 0x0F5, 0x0F6, 0x0F7};
    
canBus.autoConfigFilter(idsArray);

while( true ) {
    can >> frame;
    std::cout << frame << std::endl;
}

Aprimorar a sobrecarga de operadores "<<" e ">>" no proxy do CAN BUS

Objetivo
A classe que servirá de proxy para o CAN BUS precisa permitir o uso dos operadores ">>" e "<<" para lida e escrita de mensagens no socket do CAN respectivamente, assim como no exemplo abaixo.

int main () {

    struct can_frame frame;
    CAN canBus("vcan0");

    frame.can_id = 0x500;
    frame.can_dlc = 0;
    can << frame;

    while( true ) {
        can >> frame;
        std::cout << frame << std::endl;
    }
}

Adicional
Também providenciar uma sobrecarga para permitir a exibição do frame via std::cout.

Criar os testes unitários em GoogleTests para a classe proxy CAN

Objetivo
Criar os testes unitários em GoogleTests para a classe proxy CAN

Motivação
Atualmente os testes para a classe CAN encontram-se como arquivos .cpp que fazem o uso da classe. Porém, afim de manter o padrão estabelecido pelo Zenith, precisa-se passar os testes para a plataforma de testes GoogleTests.

Trocar o m_interfaceName.copy pelo strncpy

Descrição do bug
O método .copy da std::string não adiciona um '\0' ao final da string cópia, o que produz um erro.

Esse .copy aparece durante a cópia do nome da interface do can para o membro ifr_name da a struct ifr.i

Resolução
Trocar o m_interfaceName.copy pelo strncpy da biblioteca , essa função ém análoga ao strcpy com o adiocional de haver um limite máximo de caracteres a serem copiados o que o torna mais seguro em relação ao strcpy de C.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.