Diskussion:RFM12 Protokoll Stack

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Fehler

F: (17.09.2008) Im IE haben die Hamming-Tabellen alle einen schwarzen Hintergrund und schwarze Schrift (Im Firefox ist die Darstellung i.o.)
A: Ich hab die Kurzschreibweise für Farben verwendet (#f12 statt #ff1122), ist aber eigentlich leider nur in CSS erlaubt... (Aber es scheint eine gute Methode zu sein um Inhalte vor IE nutzern zu verstecken *g*)

fixed!

Anregungen

F: (31.08.2008) Ist der Code bereits benutzbar? Falls ja fände ein Beispielprogramm sehr hilfreich.
A: Im LLC fehlt noch ein bisschen was, aber PHY und MAC sind benutzbar.

I: Der Hersteller empfiehlt 4 bytes Preamble zu senden.
A: Kann man natürlich machen (und ist immernoch kompatible zum MAC). Bisher war's bei mir nicht nötig.

F: (11.10.2011) Ist nun alles vollständig implementiert und getestet?

Fragen

F: (04.09.2008) Warum gibt es auf LLC-Ebene keine Paketlängeninformation? (Jörg Wunsch)
A: Overhead. Durch das Paketendezeichen ist die Länge definiert. Zugegeben, in manchen Applikationen erscheint es sinnvoll vor dem Empfang des Paketes die Länge zu wissen, aber IP hat z.B. dafür ein eigenes Feld.

A: (120330) Das ist aber — gelinde gesagt — unglücklich gelöst!
Denn dann hätte man die Hammingbytes anders berechnen und dieses Byte als 17. Kombination eingehen lassen müssen. Zudem müsste man dieses Byte ebenfalls mit mindestens einem Bitfehler akzeptieren, um das Ende hinreichend sicher zu erkennen. Man kann einen Fehler im OSI-Layer 8 nicht im Layer 1 korrigieren: Das ganze Konstrukt bricht schließlich im Erdgeschoss zusammen. (heha)

F: (07.10.2008) Benutzung? Der Stack auf Layer 3 sieht ja so eigentlich ganz einfach zu verwenden aus. Aber wie genau benutze ich den jetzt? Die einfachste Methode wäre ja beim Layer 3 ein init und sofort Daten draufschieben. Aber ich sehe im Quellcode keine Verbindung zu beispielsweise RFM12_PHY_init(). Also um welche Funktionen muss ich mich wirklich kümmern, um auf Layer 3 Bytes hin und her zu schicken? Und ist das bischen was am 31.08.2008 fehlte inzwischen drinne?

Malte 19:15, 7. Okt. 2008 (CEST)

A: So in etwa hab ich mir das API gedacht: <c>

  1. include "rfm12_phy.h"
  2. include "rfm12_mac.h"
  3. include "rfm12_llc.h"
  1. define MY_RECEIVER 2
  2. define MY_PROTOCOL 13
  3. define BUF_SIZE 16

uint8_t *buffer = "Hello world"; uint8_t pos;

void myrx(uint8_t data) {

   // TODO: handle rx data

}

int16_t mytx(void) {

   if(pos < sizeof(buffer))
       return txBuf[pos++];
   return RFM12_L3_EOD;

}

void myack(bool ack) {

   printf("Sending ");
   if(ack) printf("OK\n");
   else    printf("failed\n");

}

void main() {

   RFM12_L3_Protocol_t proto = {myrx, mytx, myack};
   RFM12_PHY_init();
   RFM12_MAC_init();
   RFM12_MAC_setChannel(1);
   RFM12_LLC_registerType(MY_PROTOCOL, proto);
   while(1) {
        while(RFM12_MAC_mediaBusy());
        pos = 0;
        RFM12_LLC_sendFrame(MY_PROTOCOL, MY_RECEIVER, false);
   }

} </c>