source: rtems-libbsd/testsuite/media01/test_main.c @ d0ecc91

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since d0ecc91 was d0ecc91, checked in by Sebastian Huber <sebastian.huber@…>, on 03/26/15 at 09:24:30

media01: New test

  • Property mode set to 100644
File size: 4.2 KB
Line 
1/*
2 * Copyright (c) 2010-2015 embedded brains GmbH.  All rights reserved.
3 *
4 *  embedded brains GmbH
5 *  Dornierstr. 4
6 *  82178 Puchheim
7 *  Germany
8 *  <rtems@embedded-brains.de>
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 *    notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 *    notice, this list of conditions and the following disclaimer in the
17 *    documentation and/or other materials provided with the distribution.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 */
31
32#include <assert.h>
33#include <stdio.h>
34
35#include <rtems/bdbuf.h>
36#include <rtems/console.h>
37#include <rtems/media.h>
38#include <rtems/shell.h>
39
40#define TEST_NAME "LIBBSD MEDIA 1"
41
42static rtems_status_code
43media_listener(rtems_media_event event, rtems_media_state state,
44    const char *src, const char *dest, void *arg)
45{
46        printf(
47                "media listener: event = %s, state = %s, src = %s",
48                rtems_media_event_description(event),
49                rtems_media_state_description(state),
50                src
51        );
52
53        if (dest != NULL) {
54                printf(", dest = %s", dest);
55        }
56
57        if (arg != NULL) {
58                printf(", arg = %p\n", arg);
59        }
60
61        printf("\n");
62
63        if (event == RTEMS_MEDIA_EVENT_MOUNT && state == RTEMS_MEDIA_STATE_SUCCESS) {
64                char name[256];
65                int n = snprintf(&name[0], sizeof(name), "%s/test.txt", dest);
66                FILE *file;
67
68                assert(n < (int) sizeof(name));
69
70                printf("write file %s\n", &name[0]);
71                file = fopen(&name[0], "w");
72                if (file != NULL) {
73                        const char hello[] = "Hello, world!\n";
74
75                        fwrite(&hello[0], sizeof(hello) - 1, 1, file);
76                        fclose(file);
77                }
78        }
79
80        return RTEMS_SUCCESSFUL;
81}
82
83static void
84test_main(void)
85{
86        rtems_status_code sc;
87
88        sc = rtems_shell_init("SHLL", 16 * 1024, 1, CONSOLE_DEVICE_NAME,
89            false, true, NULL);
90        assert(sc == RTEMS_SUCCESSFUL);
91
92        exit(0);
93}
94
95#define DEFAULT_EARLY_INITIALIZATION
96
97static void
98early_initialization(void)
99{
100        rtems_status_code sc;
101
102        sc = rtems_bdbuf_init();
103        assert(sc == RTEMS_SUCCESSFUL);
104
105        sc = rtems_media_initialize();
106        assert(sc == RTEMS_SUCCESSFUL);
107
108        sc = rtems_media_listener_add(media_listener, NULL);
109        assert(sc == RTEMS_SUCCESSFUL);
110
111        sc = rtems_media_server_initialize(
112                200,
113                32 * 1024,
114                RTEMS_DEFAULT_MODES,
115                RTEMS_DEFAULT_ATTRIBUTES
116        );
117        assert(sc == RTEMS_SUCCESSFUL);
118}
119
120#include <bsp/nexus-devices.h>
121
122#define CONFIGURE_FILESYSTEM_DOSFS
123
124#include <rtems/bsd/test/default-init.h>
125
126#define CONFIGURE_SHELL_COMMANDS_INIT
127
128#include <bsp/irq-info.h>
129
130#include <rtems/netcmds-config.h>
131
132#define CONFIGURE_SHELL_USER_COMMANDS \
133  &bsp_interrupt_shell_command, \
134  &rtems_shell_BSD_Command
135
136#define CONFIGURE_SHELL_COMMAND_CPUUSE
137#define CONFIGURE_SHELL_COMMAND_PERIODUSE
138#define CONFIGURE_SHELL_COMMAND_STACKUSE
139#define CONFIGURE_SHELL_COMMAND_PROFREPORT
140
141#define CONFIGURE_SHELL_COMMAND_CP
142#define CONFIGURE_SHELL_COMMAND_PWD
143#define CONFIGURE_SHELL_COMMAND_LS
144#define CONFIGURE_SHELL_COMMAND_LN
145#define CONFIGURE_SHELL_COMMAND_LSOF
146#define CONFIGURE_SHELL_COMMAND_CHDIR
147#define CONFIGURE_SHELL_COMMAND_CD
148#define CONFIGURE_SHELL_COMMAND_MKDIR
149#define CONFIGURE_SHELL_COMMAND_RMDIR
150#define CONFIGURE_SHELL_COMMAND_CAT
151#define CONFIGURE_SHELL_COMMAND_MV
152#define CONFIGURE_SHELL_COMMAND_RM
153#define CONFIGURE_SHELL_COMMAND_MALLOC_INFO
154
155#define CONFIGURE_SHELL_COMMAND_FDISK
156#define CONFIGURE_SHELL_COMMAND_BLKSYNC
157#define CONFIGURE_SHELL_COMMAND_MSDOSFMT
158#define CONFIGURE_SHELL_COMMAND_DF
159
160#include <rtems/shellconfig.h>
Note: See TracBrowser for help on using the repository browser.