Add to 11U68 11E68

Dependencies:   DirectoryList MODSERIAL mbed

Fork of ika_shouyu_poppoyaki by Tedd OKANO

Committer:
Hapi_Tech
Date:
Sat Jul 04 05:29:32 2015 +0000
Revision:
50:57ad8e04f063
Parent:
22:bd98a782fba6
Adding LPC11U68,11E68.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 22:bd98a782fba6 1 char uu_table[ 0x60 + 1 ];
okano 22:bd98a782fba6 2
okano 22:bd98a782fba6 3
okano 22:bd98a782fba6 4 void initialize_uue_table( void )
okano 22:bd98a782fba6 5 {
okano 22:bd98a782fba6 6 int i;
okano 22:bd98a782fba6 7
okano 22:bd98a782fba6 8 uu_table[ 0 ] = 0x60; // 0x20 is translated to 0x60 !
okano 22:bd98a782fba6 9
okano 22:bd98a782fba6 10 for ( i = 1; i < 64; i++ ) {
okano 22:bd98a782fba6 11 uu_table[ i ] = (char)(' ' + i);
okano 22:bd98a782fba6 12 }
okano 22:bd98a782fba6 13 }
okano 22:bd98a782fba6 14
okano 22:bd98a782fba6 15
okano 22:bd98a782fba6 16 void initialize_uud_table( void )
okano 22:bd98a782fba6 17 {
okano 22:bd98a782fba6 18 int i;
okano 22:bd98a782fba6 19
okano 22:bd98a782fba6 20 uu_table[ 0x60 ] = 0;
okano 22:bd98a782fba6 21
okano 22:bd98a782fba6 22 for ( i = 0x21; i < 0x60; i++ ) {
okano 22:bd98a782fba6 23 uu_table[ i ] = i - 0x20;
okano 22:bd98a782fba6 24 }
okano 22:bd98a782fba6 25 }
okano 22:bd98a782fba6 26
okano 22:bd98a782fba6 27
okano 22:bd98a782fba6 28 int uudecode_a_line( char *b, char *s )
okano 22:bd98a782fba6 29 {
okano 22:bd98a782fba6 30
okano 22:bd98a782fba6 31 unsigned long v;
okano 22:bd98a782fba6 32 int read_size;
okano 22:bd98a782fba6 33
okano 22:bd98a782fba6 34 read_size = (*s++) - ' ';
okano 22:bd98a782fba6 35
okano 22:bd98a782fba6 36 for ( int i = 0; i < read_size; i += 3 ) {
okano 22:bd98a782fba6 37 v = uu_table[ *s++ ] << 18;
okano 22:bd98a782fba6 38 v |= uu_table[ *s++ ] << 12;
okano 22:bd98a782fba6 39 v |= uu_table[ *s++ ] << 6;
okano 22:bd98a782fba6 40 v |= uu_table[ *s++ ] << 0;
okano 22:bd98a782fba6 41
okano 22:bd98a782fba6 42 *b++ = (v >> 16) & 0xFF;
okano 22:bd98a782fba6 43 *b++ = (v >> 8) & 0xFF;
okano 22:bd98a782fba6 44 *b++ = (v >> 0) & 0xFF;
okano 22:bd98a782fba6 45 }
okano 22:bd98a782fba6 46
okano 22:bd98a782fba6 47 return ( read_size );
okano 22:bd98a782fba6 48 }
okano 22:bd98a782fba6 49
okano 22:bd98a782fba6 50
okano 22:bd98a782fba6 51 long bin2uue( char *bin, char *str, int size )
okano 22:bd98a782fba6 52 {
okano 22:bd98a782fba6 53 unsigned long v;
okano 22:bd98a782fba6 54 long checksum = 0;
okano 22:bd98a782fba6 55 int strpos = 0;
okano 22:bd98a782fba6 56
okano 22:bd98a782fba6 57 *(str + strpos++) = ' ' + size;
okano 22:bd98a782fba6 58
okano 22:bd98a782fba6 59 for ( int i = 0; i < size; i += 3 ) {
okano 22:bd98a782fba6 60 checksum += *(bin + i + 0) + *(bin + i + 1) + *(bin + i + 2);
okano 22:bd98a782fba6 61 v = (*(bin + i + 0) << 16) | (*(bin + i + 1) << 8) | (*(bin + i + 2) << 0);
okano 22:bd98a782fba6 62 *(str + strpos++) = uu_table[ (v >> 18) & 0x3F ];
okano 22:bd98a782fba6 63 *(str + strpos++) = uu_table[ (v >> 12) & 0x3F ];
okano 22:bd98a782fba6 64 *(str + strpos++) = uu_table[ (v >> 6) & 0x3F ];
okano 22:bd98a782fba6 65 *(str + strpos++) = uu_table[ (v >> 0) & 0x3F ];
okano 22:bd98a782fba6 66 }
okano 22:bd98a782fba6 67 *(str + strpos++) = '\n';
okano 22:bd98a782fba6 68 *(str + strpos++) = '\0';
okano 22:bd98a782fba6 69
okano 22:bd98a782fba6 70 return checksum;
okano 22:bd98a782fba6 71 }