Giter VIP home page Giter VIP logo

bluetooth-le-single-and-multinode-framework's Introduction

Hi there ๐Ÿ‘‹

I Design and develop software for embedded system but at the end of the day I love everything related with computers. I mainly work with C, C++, and python and also learning Rust.

LANGUAGES AND TOOLS

Cย  C++ย  Pythonย  rustย  bashย  Gitย 

STATS

GitHub Stats
Top Language

bluetooth-le-single-and-multinode-framework's People

Contributors

daparrag avatar

Stargazers

 avatar

Watchers

 avatar  avatar

bluetooth-le-single-and-multinode-framework's Issues

How to define a Priorities

It is extremely necessary to define in which way the device will be assign the priority to the incoming packets. Logically it could be done according to the event type and sub event type

But in the case of BLE synchronization the problem is that the priority has to be assigned according to the service uuid, this is :

  1. The priority must be according to Packet Type but also according to the service type thus a packet coming from/to a service with higher priority could be attended faster; Well, since in the current solution for BLE the method HCI_ISR() is used for passing the packets from the pool event queue to the packet event queue, is there where is necessary include this modification.

  2. It is also important to define exactly where the priority will be include, in order to reduce the overhead generated by the priority checking in the incoming packets in the method HCI_ISR().

This is part of #16

improve devices in status READY_TO_INTERCHANGE or DISCOVERY_MODE

Actually this implementation has not any control when an device in the status READY_TO_INTERCHANGE or DISCOVERY_MODE and the event EVT_BLUE_GATT_PROCEDURE_COMPLETE return an error message, should be necessary that in case of error the device handler adequately in case in which:

  • The connection is in a service or attribute discovery mode.

  • the devices is in the peripherals discovery mode and error message is forward from the peer nodes.

error in continuous command send

Since the implementation does not have any control flag always than a command is executed repeatedly it generate and error.

it is necessary wait until the previous command has been finished before to send a new one.

Improve the Network process

If the Central - peripheral FSM(finite sate machines) are too similar. Should be interesting evaluate the chance to reuse their code and in instead that one procedure for each of them, define only one process for both finite state machines.

Large time for connection establishment

Some times the devices spend to much time trying to setup the connection, in that case it is needed that:

  • Set up a timer that allows define a time out for establishment a connection .

  • In case of time out the central device have to try establish a connection with the next peer node.

  • If there is not more devices to connect. Then the central node could retry the connection with the devices for which the time to connect expired. after certain number of tries the central device could define the connection as a lost. And start the services and attributes discovery procedure only with the peer devices for which the connection was established.

There are two definitions for role

In the file app_ble.h is defined the role as GAP_PHERIPHERAL_ROLE or GAP_CENTRAL_ROLE as well in net network.c is used a enum type dv_type_t for specified the same roles

It is necessary to have only one definition for the role compatible for all the modules.

ERROR during service and attributes discovery

A problem occur during the service and attributes discovery since in a multi-connection is possible that more than one connection share the same profile and therefore as soon one connection complete the service and attributes discovery, the others connections are not able to do it, because the flags are already established to indicate that the service and attributes discovery procedure has been completed.

Therefore is needed that:

-clean the corresponding flags after that the service and attributes discovery procedure is completed. Thus it will be guarantee that this procedure will be completed also for the other connections.

Event_Handler_approach

it is necessary to deal with different events efficiently reducing the number of function calls, for example introducing and event queue for the network and application modules in order to handler periodically the events.

Actually there is only one function used for deal with all the events while the network and application modules running sequentially even when any event has not been occur.

Event Management by the service_handler

It is necessary reorganize the way in which the events are processed by the service_handle module since it is possible to start the service discovery only when the devices is not in the connection phase

Error occur if a profile is not setup for the connections.

when a connections does not have an specific profile, the service and attribute discovery procedure fail.

Therefore is needed

  • establish an appropriate control that will validate if the profiles, services, or characteristics associated are NULL. and inform to the user.

Enhancement to the host controller interface to Support a basic QoS functionality

Task: Enhancement the host controller interface in order to support two new requirements:

  • Attach to each new received packet a timestamp (necessary for BLE synchronization).
  • The host controller interface must to be able to management the packets according to some queue priority (necessary for a basic QoS support ).

This also will sufficient to complete the issue #3

NOTE: This enhancement must not affected the default behavior of the host controller interface. Thus in case that an application does needs this new functionality it could works.

Event Handler Management free_Slots

there is not any definition of how the event handler management the free slots of the queue.

It is necessary to introduce some control mechanism to avoid overwrite slots which are not yet processed.

Event management by the network

it is necessary:

reorganized how the network module retrieve the events calling HCI_Get_Event_CB () ,
as well how the eventhandler.c insert and remove events in the list.

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.