Listing 9 (msg_out.c)

/*****************************************************
 * NAME       : message_out
 *
 * DESCRIPTION:
 *    waits for a message in the message out queue,
 *    when one appears it assembles it then sends it.
 *****************************************************/

#include "que.h"

extern struct g_queue out_que;
unsigned char buf[32];

void message_out()
{
   unsigned char no_msg_out,length;
   int i;
   
   while (true)
   {
      length = remove_one(&out_que);
      buf[0] = length;
      for(i=1; i<=length; i++)
         buf[i] = remove_one(&out_que);
      format_msg();
      send_msg();
   }
}

/******************************************************
 * NAME: format_msg
 *
 * DESCRIPTION: takes a message in the buffer and
 *              formats it for the serial port.
 *******************************************************/

format_msg()
{
   /* prepare a buffer for crc generation */
   
   /* now calculate the CRC */
   
   /* insert the crc bytes into the buffer */
   
   /* now add the DLE characters */
   
   /* add the stop flag */
   
   /* now check the CRC characters to see if we should add DLE's */
   
   /* finally - put in the length of total buffer */

}

**********************************************************************
*
* NAME        : send_msg
*
* */
send_msg()
{
 /* send the first character to the serial port to kick off the
    serial transmission. turn on the interupts and let the interrupts
    finish the rest of the transmission */

 /* now turn on the serial transmit buffer */

 /* send the first character to the serial transmit buffer */

 /* enable the interrupt for serial transmit data register empty */

 /* wait for the last character to be completely transmitted */
}