/*
* Simple test program -- simplified version of sample test hello.
*
* $Id$
*/
#include <bsp.h>
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <rtems/umon.h>
/* this code is lifted from the umon demo application */
int umon_demo(int argc, char **argv)
{
int i, tfd;
char line[80], *ab, *filename;
/* If argument count is greater than one, then dump out the
* set of CLI arguments...
*/
if (argc > 1) {
mon_printf("Argument list...\n");
for(i=0;i<argc;i++) {
mon_printf(" arg[%d]: %s\n",i,argv[i]);
if (strcmp(argv[i],"match") == 0)
mon_printf("got a match!\n");
}
}
/* Using the content of the shell variable APPRAMBASE, dump the
* memory starting at that location...
*/
ab = mon_getenv("APPRAMBASE");
if (ab) {
char *addr = (char *)strtoul(ab,0,0);
mon_printf("Dumping memory at 0x%lx...\n",addr);
mon_printmem(addr,128,1);
}
filename = "csbboot";
/* If the 'monrc' file exists, the assume it is ASCII and dump it
* line by line...
*/
if (mon_tfsstat(filename)) {
mon_printf("Dumping content of '%s'...\n",filename);
tfd = mon_tfsopen(filename,TFS_RDONLY,0);
if (tfd >= 0) {
while(mon_tfsgetline(tfd,line,sizeof(line)))
mon_printf("%s",line);
mon_tfsclose(tfd,0);
}
else {
mon_printf("TFS error: %s\n",
(char *)mon_tfsctrl(TFS_ERRMSG,tfd,0));
}
}
else {
mon_printf("File '%s' not found\n",filename);
}
return 0;
}
void catFile(const char *name)
{
int i;
FILE *fp;
char line[128];
if (!name)
return;
printf( "====> Start of file %s\n", name );
/* Attempt to open and print a file through the
* the TFS based FS...
*/
fp = fopen(name,"r");
if (!fp) {
printf("fopen() failed\n");
perror("fopen()");
return;
}
for (i=0 ; fgets(line,sizeof(line),fp) ; i++)
printf("LINE %d: %s",i, line);
printf( "====> End of file %s\n", name );
fclose(fp);
}
void tfsFsDemo(void)
{
char *name;
/* Initialize the TFS based file system...
*/
puts( "Mounting RTEMS TFS filesystem" );
if (rtems_initialize_tfs_filesystem( "/JOEL/" ) != 0) {
puts("tfs init failed");
return;
}
/* Use uMon's environment to store the name of the file.
* If the shell variable TFSFS_FILENAME is present, then
* assume it contains the name of the file to open and
* print to the console...
* For TFS to run as a file system under RTEMS, all filenames
* that are associated with tfs are preceded with "/TFS/".
*/
name = mon_getenv("TFSFS_FILENAME");
if (!name)
puts("Shell variable TFSFS_FILENAME not available");
else
catFile( name );
catFile( "/JOEL/csbboot" );
catFile( "/JOEL/boot" );
}
rtems_task Init(
rtems_task_argument ignored
)
{
puts( "\n\n*** MicroMonitor Demonstration ***" );
puts( "calling monConnect ..." );
rtems_umon_connect();
umon_demo(0, NULL);
tfsFsDemo();
puts( "*** MicroMonitor Demonstration ***" );
exit( 0 );
}
/* configuration information */
/* NOTICE: the clock driver is explicitly disabled */
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_MAXIMUM_TASKS 1
#define CONFIGURE_MAXIMUM_SEMAPHORES 5
#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 4
#define CONFIGURE_MICROSECONDS_PER_TICK 5000
#define CONFIGURE_INIT_TASK_STACK_SIZE \
(CONFIGURE_MINIMUM_TASK_STACK_SIZE * 10)
#define CONFIGURE_INIT
#include <rtems/confdefs.h>
/* end of file */