i2c tool : port to RTEMS

This commit is contained in:
Vijay Kumar Banerjee 2019-06-25 12:43:43 +05:30 committed by Christian Mauderer
parent e8c5db1e87
commit 4ed60d9076
5 changed files with 76 additions and 0 deletions

View File

@ -28,6 +28,13 @@
* SUCH DAMAGE.
*/
#ifdef __rtems__
#define __need_getopt_newlib
#include <getopt.h>
#include <machine/rtems-bsd-program.h>
#include <machine/rtems-bsd-commands.h>
#endif /* __rtems__ */
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
@ -560,6 +567,24 @@ err2:
return (1);
}
#ifdef __rtems__
static int main(int argc, char *argv[]);
int
rtems_bsd_command_i2c(int argc, char *argv[])
{
int exit_code;
void *data_begin;
size_t data_size;
rtems_bsd_program_lock();
exit_code = rtems_bsd_program_call_main("i2c", main, argc, argv);
rtems_bsd_program_unlock();
return exit_code;
}
#endif /* __rtems__ */
int
main(int argc, char** argv)
{
@ -568,6 +593,16 @@ main(int argc, char** argv)
char *dev, *skip_addr, *i2c_buf;
int error, chunk_size, i, j, ch;
#ifdef __rtems__
struct getopt_data getopt_data;
memset(&getopt_data, 0, sizeof(getopt_data));
#define optind getopt_data.optind
#define optarg getopt_data.optarg
#define opterr getopt_data.opterr
#define optopt getopt_data.optopt
#define getopt(argc, argv, opt) getopt_r(argc, argv, "+" opt, &getopt_data)
#endif /* __rtems__ */
errno = 0;
error = 0;

View File

@ -176,6 +176,7 @@ class rtems(builder.Module):
'rtems/rtems-bsd-rc-conf.c',
'rtems/rtems-bsd-set-if-input.c',
'rtems/rtems-bsd-shell-arp.c',
'rtems/rtems-bsd-shell-i2c.c',
'rtems/rtems-bsd-shell-ifconfig.c',
'rtems/rtems-bsd-shell-netstat.c',
'rtems/rtems-bsd-shell-pfctl.c',
@ -2990,6 +2991,7 @@ class user_space(builder.Module):
'usr.bin/netstat/unix.c',
'usr.bin/vmstat/vmstat.c',
'usr.sbin/arp/arp.c',
'usr.sbin/i2c/i2c.c',
],
mm.generator['source'](['-DINET'])
)

View File

@ -54,6 +54,8 @@ int rtems_bsd_command_netstat(int argc, char **argv);
int rtems_bsd_command_pfctl(int argc, char **argv);
int rtems_bsd_command_i2c(int argc, char **argv);
int rtems_bsd_command_ping(int argc, char **argv);
int rtems_bsd_command_ping6(int argc, char **argv);

View File

@ -26,6 +26,8 @@ extern rtems_shell_cmd_t rtems_shell_ARP_Command;
extern rtems_shell_cmd_t rtems_shell_PFCTL_Command;
extern rtems_shell_cmd_t rtems_shell_I2C_Command;
extern rtems_shell_cmd_t rtems_shell_PING_Command;
extern rtems_shell_cmd_t rtems_shell_PING6_Command;

View File

@ -0,0 +1,35 @@
/*
* Copyright (c) 2019 Vijay Kumar Banerjee <vijaykumar9597@gmail.com.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <rtems/netcmds-config.h>
#include <machine/rtems-bsd-commands.h>
rtems_shell_cmd_t rtems_shell_I2C_Command = {
.name = "i2c",
.usage = "i2c [args]",
.topic = "i2c",
.command = rtems_bsd_command_i2c
};