7kDAB firmware revision history 2.2 - 29-Dec-07 Addressed a watchdog trip issue related to unsupported special words 9796, 9798, and 9799. The host command processor state machine changes, specifically the timeout mechanism, was interfering with these data transfer commands because they take longer than the state machine timeout period to complete. Resolved the problem by having the data transfer routines periodically reset the time out timer. NOTE: The use of the functionality provided by these data transfer routines is (still) not supported. Though they may work most of the time, data integrity of the transfer is not guarunteed. 2.1 - 25-Aug-07 In Y-Modem Send routines, the new compiler version's more strict ANSI interpreter generated code for error condition tests that would never exit if an error condition ocurred. Changed logic tests so that this no longer occurs. Further testing in the Y-Modem send with a wider variety of terminal emulation software showed that some software must be flushing their serial input buffer before testing to see if a response had arrived. The 7KDAB was responding to commands so quickly at 115.2kBaud that the emulator software was missing commands from the 7KDAB. Among the programs that exhibited problems in this area are Hyperterm... Added intentional delays in areas where various programs appeared to have this problem such that the emulator software would have enough time to flush their character buffers and resume accepting valid protocol commands on the serial port. Also pushed some of the retry timers out a bit to give slower host systems the oppertunity to flush their buffers of a corrupted data block and ready themselves to receive a retry block.... again, different emulators appear to have implimented different timeout values... despite what the protocol document says is the right way to do it. Added time/date stamping to DTMF digit display in remote front panel. 2.0 - 19-Aug-07 Added Morse Code and tone generation capabilities. Implimented a Morse busy message that will be played if the file system is in use with something like a file upload. Busy message will be played a maximum of once every 30 seconds. File system timeout is 2 seconds. Improved password matching routine to also match the supplied password's length with the stored password, also used stdlib functions to shrink code size a bit. Check number of parameters for file rename command... Version checkpoint - 15-Jun-07 -> 14-Aug-07 Addressed possible memory corruption issue that could occur with a Y-Modem file receive if the host alternated between 128 and 1024 byte data blocks. Made substantial improvements to the Y-Modem receiver routines to properly impliment block retries, and worked around a bug in Hyperterm's Y-Modem send routines that do not properly impliment some error handling mechanisms. Provide more verbose error responses for Y-Modem receive failures. Disk full, and other error information is now returned to the host system. Failed Y-Modem receive sessions will now delete any partial file fragment which may have already been written to the file system. Increased Y-Modem receive startup retry count from 10 to 20 to allow user more time to select file(s) to upload and begin transfer. Improved command line parsing routines in order to simplify implimenting user commands which accept multiple parameters. Added file "REName" command. Added some new watchdog resets inside sector write routines to accomodate some cards which take a pronounced amount of time to write out new sector data. The problem was most pronounced when using the file DELete command, and would occasionally result in a watchdog reset trip. Added new routines to file system code to allocate new clusters to a sub- directory as needed. Previous versions would simply treat this as a disk full situation rather than extending a subdirectories disk allocation. Improved long filename to 8.3 conversion for Y-Modem file receive routine. Fixed a cosmetic bug in directory listing that would not show a filename's suffix if the suffix was only one character in length. Fixed a cosmetic bug in directory listing related to displaying a files's timestamp. Previous versions would not properly display minutes greater than 31. Made some changes to the 7K host interface and added some additional protection logic to trap invalid states and issue a reset. Also added new command 9790 that if detected also will cause a CPU reset. Added software based real time clock and added support for writing this local time to the file creation time/date portion of the directory entry for files created locally. Added "TIME" command to allow setting and displaying the local time/date. Added support for the 9797 command to set the local time to match that of the 7K's RTC. In OpenFileWrite(), changed findfile() return value test logic so that previously used directory entries could be used, rather than only working with null dirents. Increased SEND_OP_COND retry count in MMCInit() to accomodate a 1GB transflash card that was occasionally taking a bit too long to init. Increased command line buffer length to 80 characters. Fixed bug in 7K->7KDAB command interpreter that caused an array index underflow condition when the 7K issued its sync command on power up. Added the "SCRIPT" command which parses a file stored on the local file system and allows it to program the 7K, and is paced by the 7K. Add caching to ClusterFree count value to eliminate the delay at the end of the DIRectory command. Modified DIRectory command so that if a parameter is specified, it will force a recomputation of the cluster free count. Used primarily as a means of testing to determine that the free count is correctly kept up to date as the FAT is updated. Added the "TYPE" command to echo the contents of a file to the user console. Changed 7K host statemachine logic to trap stall conditions due to file system locks and to silently handshake with the 7K to prevent the 7K from timing out and sending its remaining message buffer as CW 'garbage'. 1.7 - 25-Jul-04 Resolved an obscure timing problem which tended to occur if the user left a copy of DAB-MAIN.BIN on the MMC card after the firmware update was completed. The problem arose in the initial communications between the DAB and 7K which occur upon the simultaneous power up of both the 7K and DAB. The added communications activity which occurs with the MMC card was causing the DAB to respond slightly too slow to one of the 7K messages, causing the 7K and DAB to get out of sync with each other, and eventually causing the DAB to reset due to a watchdog trip. The only side effect of this watchdog trip was that the DAB was not automatically placed in the "smart host" mode, and thus the user would have to manually issue the "SMHOST" command in order to send commands to the 7K. This condition is identifiable by noting that the sign on message emitted from the serial port would show the reset cause as "Watchdog" rather than "Hardware". In the process of fixing this problem, additional protections were added to prevent a speak word command issued by the 7K from interfering with card initialization routines. While an unlikely condition on power up, there was an oppertunity for this to occur if the user was inserting the MMC card after the 7K was powered up and active. ---------------- 1.6 - 20-Mar-04 Fixed problem with playback of 8bit PCM files. Files were mistakenly treated as signed rather than unsigned values. --------------- 1.5 - 9-Feb-04 Added Speed Factor command 9702 so that user can speed or slow the playback of WAV files. Changed DIR command to show card ID information at head of directory listing. Removed card information from VERsion command. --------------- 1.4 - 18-Dec-03 Customer supplied MMC card, a 64M Sandisk, would occassionally encounter stuttering speech problems with certain words. The problem was ultimately traced to occasional, but repeatable, timing violations by the MMC card of the MMC specification. Specifically some sector read requests sent to the card resulted in the card indicating busy for periods exceeding the specification limits. In order to make the DAB more tolerant of these occasional timing excursions, the MMC interface code was altered to extend the busy time-out period. The same 64M Sandisk card also showed a tendancy to take a long time to perform it's power on initialization. Changes were made to the card init routine to extend the serial clock timing period and also to extend the amount of time a card has to wake up after power is applied to it. --------------- 1.3 - 10-Dec-03 Fixed bug with the Serial to DTMF emulation which was incorrectly translating the 4th column digits (A-D) into numeric digits 0 through 3. --------------- 1.2 - 16-Oct-03 Problem seen in 1.0, and thought to be addressed by 1.1 was still occurring in some units. Problems were centered around various failures in the SearchSubDir() function, which was the only function to make use of the compiler's re-entrant capabilites, which in turn cause all local variables to be placed on an eumulated stack. It appears that the unpredictable behavior had to do with un-initalized SRAM in the stack area affecting some of the C library functions in different ways. This version removed the reentrant requirement from this function thus making its local variable stroage the same as all the other functions within the program. This version also introduces command word 9710 which allows pseudo-random playback of a user specified range of WAV files. --------------- 1.1 - 19-Sep-03 Addressed a problem that oddly didn't affect all units. Version 1.0 had inadvertantly had some object modules compiled with an older version of the C compliler mixed with modules compliled by a newer version of the same compiler. The problem first manifested itself by unreliable operation of the strncmp() function not matching text while searching for file matches contained within subdirectories. Re-compiling all source modules with the newer version of the compiler and relinking with the newer C library resolved the unpredictable operation noted with the string compare library function. --------------- 1.0 - 02-Sep-03 Inital Version