/*
 * POPstar: Acorn POP3 client / SMTP sender
 * Voyager interface code
 *
 *  Joseph Heenan, 1998
 *
 * $Id: voyager,v 1.3 1999/10/05 22:33:52 joseph Exp $
 *
 */

#include "defines.h"
#include "macros.h"
#include "wimplib.h"

#include "voyager.h"

typedef struct
{
  struct
  {
    int    size;
    int    sender;
    int    my_ref;
    int    your_ref;
    int    action_code;
  } hdr;

  struct
  {
    int    id;
  } data;

} voyager_message;

#define Voyager_MInitialise 0x4a43f
#define Voyager_MMailChange 0x4a432

/* codes for Voyager_MInitialise */
#define VOYAGER_NEWSFETCHER 15
#define VOYAGER_NEWSSENDER  16
#define VOYAGER_MAILFETCHER 17
#define VOYAGER_MAILSENDER  18

/* codes for Voyager_MMailChange */
#define VOYAGER_NEWMAIL          1
#define VOYAGER_NEWNEWS          3
#define VOYAGER_MAILFETCH_ERROR  4
#define VOYAGER_MAILSEND_ERROR   5
#define VOYAGER_NEWSFETCH_ERROR  6
#define VOYAGER_NEWSSEND_ERROR   7

static int voyager_flashled = 0;

void voyager_init( int voyager, int flashled )
{
  int th;
  voyager_message mess;

  voyager_flashled = flashled;

  if ( !voyager ) return;

  mess.hdr.size        = sizeof mess;
  mess.hdr.your_ref    = 0;
  mess.hdr.action_code = Voyager_MInitialise;

  mess.data.id = VOYAGER_MAILFETCHER;

  E_CHECK( wimp_send_message( Wimp_EUserMessage, &mess, 0, 0, &th) );
}

void voyager_newmail( int num )
{
  int th;
  voyager_message mess;

  if ( !voyager_flashled ) return;

  if ( num <= 0 ) return;

  mess.hdr.size        = sizeof mess;
  mess.hdr.your_ref    = 0;
  mess.hdr.action_code = Voyager_MMailChange;

  mess.data.id = VOYAGER_NEWMAIL;

  E_CHECK( wimp_send_message( Wimp_EUserMessage, &mess, 0, 0, &th) );
}
