diff --git a/lib/jtencode/jtencode.c b/lib/jtencode/jtencode.c --- a/lib/jtencode/jtencode.c +++ b/lib/jtencode/jtencode.c @@ -57,6 +57,19 @@ char locator[5]; uint8_t power; +static void emz_memcpy( uint8_t *pDest, uint8_t *pSrc, uint32_t len ) +{ + uint32_t i; + + // Manually copy the data + for ( i = 0; i < len; i++ ) + { + // Copy data from source to destination + *pDest++ = *pSrc++; + } +} + + /* Public Class Members */ void* jtencode_init(void) @@ -163,29 +176,30 @@ void jt9_encode(char * message, uint8_t */ void jt4_encode(char * message, uint8_t * symbols) { + // emz comment memmove // Ensure that the message text conforms to standards - // -------------------------------------------------- - jt_message_prep(message); - - // Bit packing - // ----------- - uint8_t c[13]; - jt9_bit_packing(message, c); - - // Convolutional Encoding - // --------------------- - uint8_t s[JT4_SYMBOL_COUNT]; - convolve(c, s, 13, JT4_BIT_COUNT); - - // Interleaving - // ------------ - jt9_interleave(s); - memmove(s + 1, s, JT4_BIT_COUNT); - s[0] = 0; // Append a 0 bit to start of sequence - - // Merge with sync vector - // ---------------------- - jt4_merge_sync_vector(s, symbols); +// // -------------------------------------------------- +// jt_message_prep(message); +// +// // Bit packing +// // ----------- +// uint8_t c[13]; +// jt9_bit_packing(message, c); +// +// // Convolutional Encoding +// // --------------------- +// uint8_t s[JT4_SYMBOL_COUNT]; +// convolve(c, s, 13, JT4_BIT_COUNT); +// +// // Interleaving +// // ------------ +// jt9_interleave(s); +// memmove(s + 1, s, JT4_BIT_COUNT); +// s[0] = 0; // Append a 0 bit to start of sequence +// +// // Merge with sync vector +// // ---------------------- +// jt4_merge_sync_vector(s, symbols); } /* @@ -194,9 +208,9 @@ void jt4_encode(char * message, uint8_t * Takes an arbitrary message of up to 13 allowable characters and returns * * call - Callsign (6 characters maximum). - * loc - Maidenhead grid locator (4 charcters maximum). + * loc - Maidenhead grid locator (4 characters maximum). * dbm - Output power in dBm. - * symbols - Array of channel symbols to transmit retunred by the method. + * symbols - Array of channel symbols to transmit returned by the method. * Ensure that you pass a uint8_t array of size WSPR_SYMBOL_COUNT to the method. * */ @@ -332,8 +346,18 @@ void wspr_message_prep(char * call, char // longer than 5 characters. if((call[1] >= '0' && call[1] <= '9') && (call[2] < '0' || call[2] > '9')) { - memmove(call + 1, call, 5); + //memmove(call + 1, call, 5); + //call[0] = ' '; + + call[6] = '\0'; + call[5] = call[4]; + call[4] = call[3]; + call[3] = call[2]; + call[2] = call[1]; + call[1] = call[0]; call[0] = ' '; + + } // Now the 3rd charcter in the callsign must be a digit @@ -355,7 +379,7 @@ void wspr_message_prep(char * call, char } } - memcpy(callsign, call, 6); + emz_memcpy(callsign, call, 6); // Grid locator validation for(i = 0; i < 4; i++) @@ -367,7 +391,7 @@ void wspr_message_prep(char * call, char } } - memcpy(locator, loc, 4); + emz_memcpy(locator, loc, 4); // Power level validation // Only certain increments are allowed @@ -561,7 +585,7 @@ void jt65_interleave(uint8_t * s) } } - memcpy(s, d, JT65_ENCODE_COUNT); + emz_memcpy(s, d, JT65_ENCODE_COUNT); } void jt9_interleave(uint8_t * s) @@ -600,7 +624,7 @@ void jt9_interleave(uint8_t * s) d[j0[i]] = s[i]; } - memcpy(s, d, JT9_BIT_COUNT); + emz_memcpy(s, d, JT9_BIT_COUNT); } void wspr_interleave(uint8_t * s) @@ -637,14 +661,19 @@ void wspr_interleave(uint8_t * s) } } - memcpy(s, d, WSPR_BIT_COUNT); + emz_memcpy(s, d, WSPR_BIT_COUNT); } void jt9_packbits(uint8_t * d, uint8_t * a) { uint8_t i, k; k = 0; - memset(a, 0, JT9_ENCODE_COUNT); + + //memset(a, 0, JT9_ENCODE_COUNT); + for(uint8_t iter = 0; iter