programa para pasar de septetos a octetos en tramas PDU

Dependencies:   mbed

Fork of pdu1 by Gustavo Ramirez

main.cpp

Committer:
tony63
Date:
2014-10-16
Revision:
0:0d2c03fdec12
Child:
1:b0989e540fff

File content as of revision 0:0d2c03fdec12:

#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));
         
}