apps/examples/obd2: Add OBD2 example application

This commit is contained in:
Alan Carvalho de Assis 2017-10-28 13:38:47 -06:00 committed by Gregory Nutt
parent a1f1f68b72
commit 8aa72a0ad4
7 changed files with 221 additions and 1 deletions

View File

@ -1314,6 +1314,11 @@ examples/null
This is the do nothing application. It is only used for bringing This is the do nothing application. It is only used for bringing
up new NuttX architectures in the most minimal of environments. up new NuttX architectures in the most minimal of environments.
examples/obd2
^^^^^^^^^^^^^
A simple test of apps/canutils/libobd2.
examples/oneshot examples/oneshot
^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^

11
examples/obd2/.gitignore vendored Normal file
View File

@ -0,0 +1,11 @@
/Make.dep
/.depend
/.built
/*.asm
/*.obj
/*.rel
/*.lst
/*.sym
/*.adb
/*.lib
/*.src

15
examples/obd2/Kconfig Normal file
View File

@ -0,0 +1,15 @@
#
# For a description of the syntax of this configuration file,
# see the file kconfig-language.txt in the NuttX tools repository.
#
config EXAMPLES_OBD2
bool "OBD-II application example"
default n
select CANUTILS_LIBOBD2
---help---
Enable the OBD-II application example.
if EXAMPLES_OBD2
endif

39
examples/obd2/Make.defs Normal file
View File

@ -0,0 +1,39 @@
############################################################################
# apps/examples/obd2/Make.defs
# Adds selected applications to apps/ build
#
# Copyright (C) 2017 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
#
# 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.
# 3. Neither the name NuttX nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
# COPYRIGHT OWNER 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.
#
############################################################################
ifeq ($(CONFIG_EXAMPLES_OBD2),y)
CONFIGURED_APPS += examples/obd2
endif

56
examples/obd2/Makefile Normal file
View File

@ -0,0 +1,56 @@
############################################################################
# apps/examples/obd2/Makefile
#
# Copyright (C) 2017 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
#
# 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.
# 3. Neither the name NuttX nor the names of its contributors may be
# used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
# COPYRIGHT OWNER 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 $(TOPDIR)/Make.defs
# OBD2 application info
CONFIG_EXAMPLES_OBD2_PRIORITY ?= SCHED_PRIORITY_DEFAULT
CONFIG_EXAMPLES_OBD2_STACKSIZE ?= 2048
APPNAME = obd2
PRIORITY = $(CONFIG_EXAMPLES_OBD2_PRIORITY)
STACKSIZE = $(CONFIG_EXAMPLES_OBD2_STACKSIZE)
# OBD2 Example
ASRCS =
CSRCS =
MAINSRC = obd2_main.c
CONFIG_EXAMPLES_OBD2_PROGNAME ?= obd2$(EXEEXT)
PROGNAME = $(CONFIG_EXAMPLES_OBD2_PROGNAME)
include $(APPDIR)/Application.mk

94
examples/obd2/obd2_main.c Normal file
View File

@ -0,0 +1,94 @@
/****************************************************************************
* examples/obd2/obd2_main.c
*
* Copyright (C) 2017 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org>
*
* 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.
* 3. Neither the name NuttX nor the names of its contributors may be
* used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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
* COPYRIGHT OWNER 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.
*
****************************************************************************/
/****************************************************************************
* Included Files
****************************************************************************/
#include <nuttx/config.h>
#include <stdio.h>
#include "canutils/obd.h"
#include "canutils/obd_pid.h"
#include "canutils/obd_frame.h"
/****************************************************************************
* Public Functions
****************************************************************************/
/****************************************************************************
* obd2_main
****************************************************************************/
#ifdef CONFIG_BUILD_KERNEL
int main(int argc, FAR char *argv[])
#else
int obd2_main(int argc, char *argv[])
#endif
{
struct obd_dev_s *dev;
int ret;
dev = obd_init("/dev/can0", 0, 0);
if (!dev)
{
printf("Failed to initialize the OBD-II device!\n");
return -1;
}
/* Request the RPM */
ret = obd_send_request(dev, OBD_SHOW_DATA, OBD_PID_RPM);
if (ret < 0)
{
printf("Failed to request RPM!\n");
return -1;
}
/* Wait for response */
ret = obd_wait_response(dev, OBD_SHOW_DATA, OBD_PID_RPM, 100);
if (ret < 0)
{
printf("Failed to receive the response!\n");
return -1;
}
/* Decode the received PID */
printf("RPM = %s\n", obd_decode_pid(dev, OBD_PID_RPM));
return 0;
}

View File

@ -34,7 +34,7 @@
****************************************************************************/ ****************************************************************************/
#ifndef __APPS_INCLUDE_CANUTILS_OBD_H #ifndef __APPS_INCLUDE_CANUTILS_OBD_H
#define __APPS_INCLUDE_CANUTILS_OBD_H #define __APPS_INCLUDE_CANUTILS_OBD_H 1
/**************************************************************************** /****************************************************************************
* Included Files * Included Files