AuronX Posted April 17, 2013 at 08:07 AM Share Posted April 17, 2013 at 08:07 AM Hallo, ich möchte gerade nochmal versuchen die Dinge zusammenzutragen die derzeit nicht dokumentiert sind. Auf der Seite der TCP/IP-Doku wären das: Die Disconnect-Probes der BindingsDie "forced-ACK" Pakete der WLAN-Extension Was meiner Meinung nach bisher auch komisch läuft sind "spezielle" UIDs. In der Beschreibung zu enumerate (FID 254) schreibt ihr, dass die UID 0 für broadcast steht: the UID in the packet header has to be set to 0 (broadcast). Allerdings wird auch die disconnect-Probe an Adresse 0 verschickt. Das würde für mich bedeuten, dass das Paket jeden Teilnehmer im Stack erreichen und dieser es selbst ignorieren muss. Ich meine mich zu erinnern, dass das nicht so ist. Das führt aber dazu, dass UID 0 eben keine broadcast-adresse ist, sondern einfach nur die Function-ID 254 was besonderes wäre. Ich fände es übrigens cool, wenn es eine echte Broadcast-Adresse gäbe und halt eine "wegwerf"-Adresse für Dinge wie Pings. Quote Link to comment Share on other sites More sharing options...
photron Posted April 17, 2013 at 03:08 PM Share Posted April 17, 2013 at 03:08 PM Allerdings wird auch die disconnect-Probe an Adresse 0 verschickt. Das würde für mich bedeuten, dass das Paket jeden Teilnehmer im Stack erreichen und dieser es selbst ignorieren muss. Richtig, exakt so läuft das. Denn nur so ist das kompatible zu älteren Firmwares. Die beiden genannten Dinge sind jetzt dokumentiert. Quote Link to comment Share on other sites More sharing options...
AuronX Posted April 17, 2013 at 04:27 PM Author Share Posted April 17, 2013 at 04:27 PM Ah okay, dachte der Master droppt das Paket sofort... Eine Anmerkung hätte ich noch Genaugenommen betrifft die Disconnect-Probe alle Verbindungsarten, also nicht nur WiFi, weil sie auch bei der Verbindung zu einem Remote-Brickd sinnvoll ist. (Nicht jeder connected zu localhost) Viele Grüße Jan Quote Link to comment Share on other sites More sharing options...
AuronX Posted April 19, 2013 at 01:22 PM Author Share Posted April 19, 2013 at 01:22 PM Ich habe zwei weitere Dinge entdeckt (weil ich gerade selbst die Brick-Seite implementiere): 1. Es wird nicht klar dokumentiert, dass alle Callbacks die SequenceNumber 0 haben müssen. Es gibt einen Beispiel-Callback in der TCP-Doku, mir war aber erst durch lesen des Quellcode klar, dass Callbacks zwingend Sequence-Number 0 haben müssen. Der Zweck dessen ist mir ebenfalls nicht klar. 2. Wenn bei einem Setter ResponseExpected auf 1 gesetzt wird, was wird dann als Antwort erwartet? Eine exakte Kopie des Paketes? Oder nur der gleiche Paketheader mit leerem Payload? Quote Link to comment Share on other sites More sharing options...
photron Posted April 19, 2013 at 01:36 PM Share Posted April 19, 2013 at 01:36 PM Zu 1: Das ist dokumentiert im Packet Layout Abschnitt: For callbacks the sequence number is always 0 and this value is not allowed for other packets. Non-callback packets can only use 1 - 15 as sequence number. This allows to distinguish callback packets from other packets. Zu 2: Es reicht als Antwort ein Header. Schreibst du einen Brick-Emulator auf TCP/IP Protokolllevel? JavaLaurence hat einen Emulator auf dem Java-API-Level (begonnen?). Quote Link to comment Share on other sites More sharing options...
AuronX Posted April 19, 2013 at 01:53 PM Author Share Posted April 19, 2013 at 01:53 PM Zu 1: Das ist dokumentiert im Packet Layout Abschnitt Verdammt. Das habe ich übersehen, sorry. Sogar mit Begründung Schreibst du einen Brick-Emulator auf TCP/IP Protokolllevel? Ganz genau. Ist eigentlich nur Spielerei, aber ich habe gerade Spaß daran gefunden Ich werde nochmal mehr dazu schreiben, wenn ich glaube, dass es für jemanden nützlich sein könnte. Dass JavaLaurence was macht habe ich noch nciht mitbekommen, da muss ich glatt mal ins englische Forum wandern ^^ Vielen Dank Jan Quote Link to comment Share on other sites More sharing options...
AuronX Posted April 21, 2013 at 11:52 AM Author Share Posted April 21, 2013 at 11:52 AM Ich bin mir fast sicher das schonmal gelesen zu haben, finde es aber in der einschlägigen Tabelle gerade nicht: http://www.tinkerforge.com/de/doc/Software/Bricklets/Temperature_Bricklet_TCPIP.html#Temperature.set_temperature_callback_threshold Beim Reached-Callback und den Optionen Inside und Outside: Muss ich das als min < x < max oder als min <= x <= max lesen? ich werde vermutlich gleich noch den Source-Code eines Bricklet dazu bemühen, aber es sollte auch dokumentiert sein (Falls ich nicht einfach nur blind bin). Quote Link to comment Share on other sites More sharing options...
borg Posted April 21, 2013 at 05:53 PM Share Posted April 21, 2013 at 05:53 PM Es ist min < x < max: if(((BC->threshold_option[i] == 'o') && ((value < BC->threshold_min[i]) || (value > BC->threshold_max[i]))) || ((BC->threshold_option[i] == 'i') && ((value > BC->threshold_min[i]) && (value < BC->threshold_max[i])))) { Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.