Diffstat (limited to 'gammu/emb/common/misc/coding/coding.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | gammu/emb/common/misc/coding/coding.h | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/gammu/emb/common/misc/coding/coding.h b/gammu/emb/common/misc/coding/coding.h new file mode 100644 index 0000000..d0c334d --- a/dev/null +++ b/gammu/emb/common/misc/coding/coding.h | |||
@@ -0,0 +1,133 @@ | |||
1 | /* (c) 2002-2004 by Marcin Wiacek and others */ | ||
2 | |||
3 | #ifndef __coding_h | ||
4 | #define __coding_h | ||
5 | |||
6 | #include <stdlib.h> | ||
7 | |||
8 | #include "../misc.h" | ||
9 | |||
10 | #ifdef __OpenBSD__ | ||
11 | typedef int wint_t; | ||
12 | #endif | ||
13 | |||
14 | /* ---------------------------- Unicode ------------------------------------ */ | ||
15 | bool mywstrncasecmp (unsigned const char *a, unsigned const char *b, int num); | ||
16 | unsigned char *mystrstr (unsigned const char *haystack, unsigned const char *needle); | ||
17 | bool mywstrncmp (unsigned const char *a, unsigned const char *b, int num); | ||
18 | bool myiswspace (unsigned const char *src); | ||
19 | int mytowlower (wchar_t c); | ||
20 | |||
21 | unsigned int EncodeWithUnicodeAlphabet(const unsigned char *value, wchar_t *dest); | ||
22 | unsigned int DecodeWithUnicodeAlphabet(wchar_t value, unsigned char *dest); | ||
23 | |||
24 | unsigned int UnicodeLength (const unsigned char *str); | ||
25 | unsigned char *DecodeUnicodeString (const unsigned char *src); | ||
26 | unsigned char *DecodeUnicodeConsole (const unsigned char *src); | ||
27 | void DecodeUnicode (const unsigned char *src, unsigned char *dest); | ||
28 | void EncodeUnicode (unsigned char *dest, const unsigned char *src, int len); | ||
29 | |||
30 | void CopyUnicodeString (unsigned char *Dest, unsigned char *Source); | ||
31 | void ReverseUnicodeString (unsigned char *String); | ||
32 | |||
33 | void ReadUnicodeFile (unsigned char *Dest, unsigned char *Source); | ||
34 | |||
35 | void DecodeUnicodeSpecialNOKIAChars(unsigned char *dest, const unsigned char *src, int len); | ||
36 | void EncodeUnicodeSpecialNOKIAChars(unsigned char *dest, const unsigned char *src, int len); | ||
37 | |||
38 | /* ------------------------------- BCD ------------------------------------- */ | ||
39 | unsigned char EncodeWithBCDAlphabet (int value); | ||
40 | int DecodeWithBCDAlphabet (unsigned char value); | ||
41 | |||
42 | void DecodeBCD (unsigned char *dest, const unsigned char *src, int len); | ||
43 | void EncodeBCD (unsigned char *dest, const unsigned char *src, int len, bool fill); | ||
44 | |||
45 | /* ------------------------------ UTF7 ------------------------------------- */ | ||
46 | void DecodeUTF7 (unsigned char *dest, const unsigned char *src, int len); | ||
47 | |||
48 | /* ------------------------------ UTF8 ------------------------------------- */ | ||
49 | wchar_t DecodeWithUTF8Alphabet (unsigned char mychar3, unsigned char mychar4); | ||
50 | bool EncodeWithUTF8Alphabet (unsigned char mychar1, unsigned char mychar2, unsigned char *ret1, unsigned char *ret2); | ||
51 | |||
52 | bool EncodeUTF8QuotedPrintable(unsigned char *dest, const unsigned char *src); | ||
53 | void DecodeUTF8QuotedPrintable(unsigned char *dest, const unsigned char *src, int len); | ||
54 | |||
55 | bool EncodeUTF8 (unsigned char *dest, const unsigned char *src); | ||
56 | void DecodeUTF8 (unsigned char *dest, const unsigned char *src, int len); | ||
57 | |||
58 | /* ------------------------------- BASE64 ---------------------------------- */ | ||
59 | void EncodeBASE64 (const unsigned char *Input, unsigned char *Output, int Length); | ||
60 | int DecodeBASE64 (const unsigned char *Input, unsigned char *Output, int Length); | ||
61 | |||
62 | /* ----------------------------- HexBin ------------------------------------ */ | ||
63 | void DecodeHexBin (unsigned char *dest, const unsigned char *src, int len); | ||
64 | void EncodeHexBin (unsigned char *dest, const unsigned char *src, int len); | ||
65 | |||
66 | /* ----------------------------- HexUnicode -------------------------------- */ | ||
67 | void DecodeHexUnicode (unsigned char *dest, const unsigned char *src, int len); | ||
68 | void EncodeHexUnicode (unsigned char *dest, const unsigned char *src, int len); | ||
69 | |||
70 | /* ---------------------- DefaultAlphabet for SMS -------------------------- */ | ||
71 | void EncodeDefault (unsigned char *dest, const unsigned char *src, int *len, bool UseExtensions, unsigned char *ExtraAlphabet); | ||
72 | void DecodeDefault (unsigned char *dest, const unsigned char *src, int len, bool UseExtensions, unsigned char *ExtraAlphabet); | ||
73 | void FindDefaultAlphabetLen (const unsigned char *src, int *srclen, int *smslen, int maxlen); | ||
74 | |||
75 | int GSM_PackSevenBitsToEight(int offset, unsigned char *input, unsigned char *output, int length); | ||
76 | int GSM_UnpackEightBitsToSeven(int offset, int in_length, int out_length, | ||
77 | unsigned char *input, unsigned char *output); | ||
78 | |||
79 | /* ----------------- Phone numbers according to GSM specs ------------------ */ | ||
80 | |||
81 | /** | ||
82 | * Enum to handle types of phones numbers like | ||
83 | * specified in GSM 03.40 section 9.1.2.5 | ||
84 | */ | ||
85 | typedef enum { | ||
86 | /** | ||
87 | * Unknown number type | ||
88 | */ | ||
89 | NUMBER_UNKNOWN = 0x81, | ||
90 | /** | ||
91 | * International number (full number with code of country) | ||
92 | */ | ||
93 | NUMBER_INTERNATIONAL= 0x91, | ||
94 | /** | ||
95 | * Alphanumeric number (with chars too) | ||
96 | */ | ||
97 | NUMBER_ALPHANUMERIC= 0xD0 | ||
98 | |||
99 | /* specification give also other values */ | ||
100 | } GSM_NumberType; | ||
101 | |||
102 | void GSM_UnpackSemiOctetNumber(unsigned char *retval, unsigned char *Number, bool semioctet); | ||
103 | int GSM_PackSemiOctetNumber (unsigned char *Number, unsigned char *Output, bool semioctet); | ||
104 | |||
105 | /* ---------------------------- Bits --------------------------------------- */ | ||
106 | |||
107 | void BufferAlign (unsigned char *Destination, int *CurrentBit); | ||
108 | void BufferAlignNumber(int *CurrentBit); | ||
109 | |||
110 | void AddBuffer (unsigned char *Destination, int *CurrentBit, unsigned char *Source, int BitsToProcess); | ||
111 | void AddBufferByte(unsigned char *Destination, int *CurrentBit, unsigned char Source, int BitsToProcess); | ||
112 | |||
113 | void GetBuffer (unsigned char *Source, int *CurrentBit, unsigned char *Destination, int BitsToProcess); | ||
114 | void GetBufferInt (unsigned char *Source, int *CurrentBit, int *integer, int BitsToProcess); | ||
115 | void GetBufferI (unsigned char *Source, int *CurrentBit, int *result, int BitsToProcess); | ||
116 | |||
117 | int GetBit (unsigned char *Buffer, int BitNum); | ||
118 | int SetBit (unsigned char *Buffer, int BitNum); | ||
119 | int ClearBit (unsigned char *Buffer, int BitNum); | ||
120 | |||
121 | /* ---------------------------- Other -------------------------------------- */ | ||
122 | |||
123 | void StringToDouble(char *text, double *d); | ||
124 | |||
125 | bool mystrncasecmp (unsigned const char *a, unsigned const char *b, int num); | ||
126 | |||
127 | void MyGetLine(unsigned char *Buffer, int *Pos, unsigned char *OutBuffer, int MaxLen); | ||
128 | |||
129 | #endif | ||
130 | |||
131 | /* How should editor hadle tabs in this file? Add editor commands here. | ||
132 | * vim: noexpandtab sw=8 ts=8 sts=8: | ||
133 | */ | ||