Hallo,
ich entwickle gerade eine kleine Alarmanlage für einen Snackautomaten und nutze dafür ein marktübliches GSM-Modul, welches über ein Raspberry Pico angesteuert wird. Um einen Alarm zu versenden, muss ich das GSM-Modul mittels PDU-kodierten Befehl ansteuern. Grundsätzlich funktioniert das Versenden von SMS auch. Da ich aber vorhabe, über die DEX-Schnittstelle des Automaten später auch zusätzliche Informationen über den Automaten zu versenden, wollte ich den SMS-Versand direkt in Unicode umsetzen. Da das nicht funktionierte und das Internet zwar voll mit irgendwelchen Quellen ist, die aber kaum bis überhaupt nicht weiterhelfen, habe ich mir die Spezifikation für das PDU-Protokoll heruntergeladen (3GPP TS 23.040, siehe Anhang).
Dabei hänge ich jetzt gerade an den Message Flags (erstes Oktett nach den kodierten Informationen über das SMSC). Die Spezifikation unterscheidet nach Nachrichtentyp (Kapitel 9) und gibt vor, welche Bits welches Flag repräsentieren. Theoretisch zumindest. Tatsächlich lässt sich das aus der Spezifikation nur schwer ableiten, da nur lose dabei steht, welche Flags für welchen Nachrichtentyp mit wievielen Bits überhaupt gesetzt werden.
Da ich zukünftig nur selten wieder mit dem PDU-Format in Berührung kommen werde, insofern alles reibungslos funktioniert, trage ich meine Erkenntnisse in einer PowerPoint zusammen, die ich als PDF beigefügt habe. Auf Seite 8 ist mein Problem mit einer möglichen Lösung zusammengefasst. In der Spezifikation findet sich das ab Kapitel 9.2.
Zu meiner Frage: Woher weiß ich bei der Option SMS-DELIVER, welches der Bits nicht zu setzen ist?
Es handelt sich um ein Oktett, dass laut Spezifikation aber nur 7 Bits bei diesem Nachrichtentyp verwendet. Grundsätzlich hätte ich auf Bit 7 getippt, welches nicht zu setzen ist. Spaßeshalber habe ich ChatGPT gefragt, die KI benennt Bit 5 und 6 als reserviert (witzig, dann wären es nur noch 6 Bits) und auf Nachfrage dann nur Bit 5 "weil es etablierte Regeln gibt". Grundsätzlich habe ich festgestellt, dass die Auflistung in der Spezifikation bei Bit 0 beginnt. Steht also TP-MTI als erstes (was zwei Bit benötigt), so belegt diese Flag eben Bit 0+1 (anhand der Darstellung der Tabelle ist das nicht unbedingt intuitiv, ich bin zuerst verkehrt herum rangegangen). Zum Vergleich siehe http://www.nobbi.com/sms_pdu.html (die einzige sehr gute Quelle zu dem Thema). Bei den REPORT-Nachrichtentypen steht unter der Tabelle wenigstens noch, welche Bits reserviert sind, da kann ich mir das ableiten. Schaut man sich in meiner PDF aber mal die Tabelle an, dann könnte die Antwort von ChatGPT durchaus richtig sein, da die UDHI-Flag sonst einzig bei DELIVER auf Bit 5 und nicht wie bei allen anderen Nachrichtentypen auf Bit 6 übertragen werden würde. Einfach testen, welche SMS ankommt und welche nicht, will ich aus Kostengründen nicht.
Ich hoffe, meine Frage ist verständlich.
Viele Grüße und vielen Dank bereits jetzt,
Sören