programa para pasar de septetos a octetos en tramas PDU

Dependencies:   mbed

Fork of pdu1 by Gustavo Ramirez

Revision:
0:0d2c03fdec12
Child:
1:b0989e540fff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Oct 16 22:12:30 2014 +0000
@@ -0,0 +1,53 @@
+#include "mbed.h"
+Serial pc(USBTX, USBRX); // tx, rx
+/*
+ALGORITMO PARA PASAR DE SEPTETOS A OCTETOS
+EN UNA MENSAJE DE TEXTO DE CELULAR EN FORMATO PDU
+USA DOS CADENAS UNA DE ENTRADA Y OTRA DE SALIDA
+LENIN ES LA LONGITUD DE ENTRADA
+LENOUT LA LONGITUD DE SALIDA
+SE USA PARA ENSAMBLAR UNA TRAMA PDU
+ESTA CADENA DE SALIDA SE ENVIA SOBRE LA TRAMA PDU COMPLETA
+VERIFIQUE CON EL DECODIFICADOR DE ESTA PAGINA::
+PROBADA PARA CUALQUIER LONGITUD VER:SEP 24 DEL 2014
+http://www.twit88.com/home/utility/sms-pdu-encode-decode
+*/
+char DE[255];
+char DS[255];
+int i,K,C,LENOUT,LENIN;
+float chk;
+
+int main(){
+         ; //numero de caracteres de abajo
+         char DE[]="la gallina cafe es una verdadera grosera que merece ser cocinada";
+         LENIN=strlen(DE);
+         /*
+         los octetos ASI VIAJA POR LA RED GSM
+         EC 30 E8 1C 66 B3 D3 EE 30 68 1C 36 97 41 E5 39 A8 EE 0E 83 EC 65 39 39 4C 2E CB
+         C3 A0 B3 FC 3D 2F CB C3 A0 78 BD 0C 6A 97 E5 E5 71 19 34 2F CB 41 E3 F7 38 ED 0E 93 C3
+
+         y los septetos ASI HAGO VISIBLE EL MENSAJE RECIBIDO
+         6c 61 20 67 61 6c 6c 69 6e 61 20 63 61 66 65 20 65 73 20 75 6e 61 20 76 65 72 64 61 64
+         65 72 61 20 67 72 6f 73 65 72 61 20 71 75 65 20 6d 65 72 65 63 65 20 73 65 72 20 63 6f
+         63 69 6e 61 64 61
+         */
+        //----------------------------------- ---------------------------
+         K=0;C=0;
+         for (i=0;i < LENIN;i++){
+         DS[i]=DE[i+C]>>K | DE[i+C+1]<<(7-K);
+         if (DS[i]==0x00) {LENOUT=i; goto salir;}
+         K++;
+         if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
+         }
+
+         //--------------------------------------------------------------
+salir:   for (i=0;i < LENIN;i++){
+         pc.printf("%X",DE[i]);
+         }
+         pc.printf(":\r\n");
+         for (i=0;i<LENOUT;i++){
+         pc.printf("%2X,%d\r\n",DS[i]&0x000000FF,i);
+         }
+         pc.printf("LENOUT:%d,LENIN:%d\r\n",LENOUT,strlen(DE));
+         
+}