Forum: HF, Funk und Felder uracoli, lwmesh, broadcast


von Michael S (Gast)


Lesenswert?

Kürzlich hab ich mir mal wider uracoli angeschaut und da gibt es sang 
und klanglos eine kompatible Implementierung zu Atmels Lightweight Mesh. 
Funktioniert auch einwandfrei.
Ich hab bisher allerdings noch keine Broadcasts empfangen können. Daten 
die an die Networkadresse 0xFFFF verschickt werden, sollen ja wohl 
Broadcast sein ? Wenn ich in den Sourcecode schaue, scheinen solche 
Pakete auch weitergesendet zu werden, aber sie kommen bei mir nicht am 
lokalen Endpoint an. Hat einer schon mal erfolgreich Broadcasts 
empfangen ?

Danke

Michael

von A. W. (uracolix)


Lesenswert?

Hallo Michael,

im Repo ist es noch drin, wird aber derzeit nicht weiter unterstuetzt, 
da  die lizenzlichen Konsequenzen hinsichtlich der EULA bisher noch 
nicht geklaert sind. Es war einfach (m)eine dumme Idee, das 
reimplementieren zu lassen, deshalb ist diesbezueglich auch Funkstille. 
Um die FreeBSD-Lizenz fuer uracoli uneingeschraenkt aufrecht erhalten zu 
koennen, werden wir uns von dem Protokoll in Kuerze ganz trennen.

Im Team sind wir bemueht eine neue Alternative zu schaffen um einfaches 
Routing bereitzustellen. Wenn du dazu Ideen hast, bist du und jeder 
andere gern als Entwickler eingeladen.

Axel.

von Michael S (Gast)


Lesenswert?

Ah ,das ist schade. Hab ne weile mit Contiki experimentiert, aber des 
war ein ziemlicher Alptraum und meine alten Module mit rf230 rev.a. 
werden da nur schlecht unterstützt. Da fand ich es toll daß ich mit 
uracoli in nur 20 Minuten 4 Module hatte die miteinanader Daten 
ausgetauscht hatten. Hab das Routing von lwmesh zwar noch nicht 
ausprobiert, weil die alle nah beinander standen.

In den Beispielen hab ich noch nichts konkretes gefunden. Wie 
funktioniert denn ein Broadcast unter uracoli ohne lwmesh ?

Danke

Michael

von A. W. (uracolix)


Lesenswert?

Broadcast funktioniert quasi inherent, wenn du kein RX_AACK nutzt. Im 
normalen RX werden alle Rahmen an die Applikation weitergeleitet.

Wenn du RX_AACK nutzt und im Adressfilter deines Devices die 
Shortadresse auf 0xcafe setzt und die PAN-ID auf 0xbabe, dann werden 
alle Frames mit
Destination Adresse 0xffff oder 0xcafe und PAN-ID 0xbabe per Interrupt
signalisiert (man nutzt dabei den in der Transceiver Hardware 
inmplementierte IEEE-802.15.4 Technik).

So wird die RX-Seite aufgesetzt:
1
    uint8_t RxFrame[127];
2
3
    radio_init(RxFrame, sizeof(RxFrame));
4
    radio_set_state(STATE_OFF);
5
    radio_set_param(RP_CHANNEL(CHANNEL));
6
    radio_set_param(RP_IDLESTATE(STATE_RXAUTO));
7
    radio_set_param(RP_SHORTADDR(0xcafe));
8
    radio_set_param(RP_PANID(0xbabe));

Auf der TX Seite ist folgendes von Noeten:
1
typedef struct
2
{
3
    uint16_t fctl;
4
    uint8_t  seq;
5
    uint16_t pan;
6
    uint16_t dst;
7
    uint16_t src;
8
    /* frame payload */
9
    uint8_t  keycnt;
10
    uint8_t  data[8];
11
    uint16_t crc;
12
} my_frame_t;
13
14
my_frame_t TxFrame = {
15
        .fctl = 0x8841,
16
        .pan = 0xbabe,
17
        .dst = 0xffff, // broadcast frame
18
        .src = 0xbeef
19
};
20
21
    // senden eines Frames:
22
    radio_set_state(STATE_TXAUTO);
23
    TxFrame.keycnt = keycnt;
24
    radio_send_frame(sizeof(TxFrame) , (uint8_t *)&TxFrame, 0);
25
    LED_TOGGLE(0);
26
    return 0;

Ein ausformuliertes compilierfaehiges Beispiel gibt es hier:
http://uracoli.nongnu.org/manual/pgXmplRadioRange.html

von Michael S (Gast)


Lesenswert?

Danke ! Dann werd ich des mal ausprobieren..


Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.