Git Product home page Git Product logo

ibm-lmic's Introduction

ibm-lmic

This respository was set up to track the code posted by IBM Zurich for supporting the LoRaWAN MAC on embedded systems. Ths code is written in C, and supports radios that use the Semtech SX1272 and SX1276 chips. The repository contains the V1.5 code and V1.6 code.

The repository was imported using Mercurial and then converted to Git using hggit. Due to bugs in hggit and Mercurial 3.9, I had to use an unreleased version of hggit, using commit tag d0ce6ea.

The intention is to keep this repository relatively clean, and to fork it for further experimentation and development. Bugs will be tracked and fixes will be applied, but major functional changes will happen elsewhere.

ibm-lmic's People

Contributors

terrillmoore avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ibm-lmic's Issues

LMIC_disableChannel doesn't index the channel map properly when CFG_us915 is set

The following code in lmic.c is wrong:

void LMIC_disableChannel (u1_t channel) {
    if( channel < 72+MAX_XCHANNELS )
        LMIC.channelMap[channel/4] &= ~(1<<(channel&0xF));
}

The penultimate line is supposed to be indexing by word based on channel, which would mean dividing by 16, not by 4.

The result is that disabling channel can write off the end of the channel map, and in any case doesn't work properly unless the channel number is less than 4.

For consistency with other places in the code, it should be rewritten as:

        LMIC.channelMap[channel>>4] &= ~(1<<(channel&0xF));

eu868 channel initialization doesn't match arduino-lmic

The join code for eu868 seems to use 6 channels; the ardunio-lmic code uses three. Per @tftelkamp, these are not part of the eu868 channel plan for LoRaWAN 1.0.2, and were removed in advance based on prior knowledge. So we need to remove them here. Will file new issue.

schedrx2() calculations in IBM code don't have clock compensation

Not clear that it's needed, but the arduino-lmic code for schedRx12() is much different than the ibm-lmic code for schedRx2(). Much more elaborate clock compensation logic. There are corresponding changes in txDone(), and the schedRx*() functions are used differently. Also check processRx1Jacc(), processRx1DnData().

DR_PING is set to SF9, not DR_SF9

In lorabase.h, DR_PING is defined as SF9; this is a category error, it should be DR_SF9. It's not correct; SF9 is numerically 3; DR_SF9 is 4.

Latest commit does not compile

Hello
this commit 5cb09ab
does not compile.

lmic.c uses a field called rxDelay which is not part of the structure..
Should I add a os_time_t delay to the structure?

Thanks
Julien

Adapt eu868 bandplan to match LoRaWAN 1.0.2

Per the resolution of #4, the IBM v1.6 code should be updated to match the arduino-lmic code with regards to the LoRaWAN 1.0.2 channel plan: joins happen on only three channels, not six.

IBM code doesn't reset counters on join

The IBM LMIC code doesnt reset the TX sequence number on join. It also doesn't grab the Rx Delay from the join accept message, nor does it grab the dn2 datarate.

Enabling Class B or C for Continuous Downlink Without Uplink Pre-requisite

Hello,

I am intending to leverage your library for a vehicle sharing IoT device integrated with Helium. I've managed to get the examples operational, but it appears that only Class A functionality is currently working. If my understanding is correct, Class A requires an uplink transmission before a downlink can be received, which isn't an optimal solution for my use case.

My application requires real-time command transmission to the device, such as initiating lock/unlock operations. This demands a continuous ability to receive downlink messages independent of any preceding uplink transmission.

I understand that Class C, which provides continuous listening for downlinks, is currently not implemented in your library. However, I am interested in knowing if Class B, which according to my research opens the downlink window at regular intervals (e.g., every 10 seconds), is supported or can be implemented. This mode would be more than sufficient for my application requirements.

I appreciate your help and clarification on this matter.

Thank you!

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.