MIB Objekt zur Abfrage der Funkempfangsstärke
Um zu bestimmen, ob der Empfang zwischen SNMP Agent und 6LoWPAN Router ausreichend ist, wurde der aktuelle Wert der Funkempfangsstärke über SNMP abfragbar gemacht. Ermöglicht wird dies durch die Funktion rf230_get_raw_rssi(), welche sich ab Contiki 2.5 in den Radio Treibern für den AT86RF230 in der Datei rf230bb.c im Contiki Unterverzeichnis cpu\radio\rf230bb \ befindet. Die Funktion rf230_get_raw_rssi() nutzt wiederum die Funktion hal_register_read, diese ermöglicht es einzelne Register, wie z.B. das für die aktuelle Empfangsstärke, des AT86RF230 auszulesen. Es werden jedoch Werte von 0-84 dB in 1 dB Schritten zurückgeliefert. Diese Werte sind so zu interpretieren, dass 0 dem schlechtesten Empfangswert in dB entspricht und 84 dem besten Empfangswert. Um nun die Empfangsstärke in dBm zu berechnen, muss -91dBm als Startwert genommen werden und der Wert des Registers addiert werden. In folgenden Quellcode wurde dieser Vorgang in einer Get-Funktion umgesetzt.
/** \brief RSSI value get function*/ s8t getRssiValue(mib_object_t* object, u8t* oid, u8t len) { int rssi_temp; rssi_temp=rf230_get_raw_rssi(); object->varbind.value.i_value = (-91)+(rssi_temp); //Already multiplicated with three return 0; }