/*    Visca Interface Program
visca1.c */

#include "cport.h"
#include <stdio.h>
#include <conio.h>

void sendpacket(unsigned char *packet);

/* DEFINITIONS */

unsigned char power_on_off[] = {3,0x00,0x1f,0x1f};
unsigned char camera_start_stop[] = {3,0x20,0x0a,0x2a};
COM com1;

void main()
{
  char ch, inkey;
  int x;

  com1 = ComOpen(COM1, B38400, W8|S1|ODD, 1024, 512);
  if(com1 == NULL) printf("\nError opening COM1...exiting program");

  while(1){

    printf("\n\n\nRS2L Camcorder Control Menu\n\n");
    printf("1 - Power On/Off\n");
    printf("2 - Camera Start/Stop\n");
    printf("9 - Quit\n\n");

    while( !kbhit() ){
      ch = ComGetc(com1);
      if(ch){
	printf("\nPacket in: ");
	printf("%02x ", ch);
      }
      while(1){
	ch = ComGetc(com1);
	if(!ch) break;
	printf("%02x ", ch);
      }
    }

    inkey = getch();
    switch(inkey){
      case '1': sendpacket(power_on_off);
	break;
      case '2': sendpacket(camera_start_stop);
	break;
      case '9':
	ComClose(com1);
	exit(0);
    }

  }
}

void sendpacket(unsigned char *packet)
{
  int msglen;
  long int x;

  printf("\npacket output: ");
  msglen = *packet;
  packet++;

  while(msglen){
    ComPutc(com1, *packet);
    printf("%02x", *packet);
    packet++;
    msglen--;
  }
  printf("\n");
}
