Skip to content

Commit

Permalink
Merge pull request #333 from joan2937/Release-v75
Browse files Browse the repository at this point in the history
Release v75
  • Loading branch information
guymcswain committed Mar 23, 2020
2 parents bab05ce + f2fdb2d commit f16fa17
Show file tree
Hide file tree
Showing 14 changed files with 444 additions and 154 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ __pycache__
build
dist
*.egg-info
wavepad_jitter.py

142 changes: 66 additions & 76 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
cmake_minimum_required(VERSION 3.0)

project(pigpio)
project(pigpio LANGUAGES C VERSION 0.71)

set(CMAKE_C_FLAGS "-O3 -Wall -pthread")
set(PIGPIO_FLAGS "-L. -lrt")
#set(DESTDIR ${CMAKE_CURRENT_SOURCE_DIR}/build/dest)
list (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/cmake)

if(NOT DEFINED BUILD_SHARED_LIBS)
set(BUILD_SHARED_LIBS "ON")
endif(NOT DEFINED BUILD_SHARED_LIBS)
find_package(Threads REQUIRED)
find_package(RT REQUIRED)

option(BUILD_SHARED_LIBS "Create shared libraries" ON)

add_compile_options(-Wall)

# libpigpio.(so|a)
add_library(pigpio pigpio.c command.c custom.cext)
Expand All @@ -19,119 +20,108 @@ add_library(pigpiod_if pigpiod_if.c command.c)
# libpigpiod_if2.(so|a)
add_library(pigpiod_if2 pigpiod_if2.c command.c)


# x_pigpio
add_executable(x_pigpio x_pigpio.c)
add_dependencies(x_pigpio pigpio)
target_link_libraries(x_pigpio
${PIGPIO_FLAGS}
-lpigpio
)
target_link_libraries(x_pigpio pigpio RT::RT Threads::Threads)

# x_pigpiod_if
add_executable(x_pigpiod_if x_pigpiod_if.c)
add_dependencies(x_pigpiod_if pigpiod_if)
target_link_libraries(x_pigpiod_if
${PIGPIO_FLAGS}
-lpigpiod_if
)
target_link_libraries(x_pigpiod_if pigpiod_if RT::RT Threads::Threads)

# x_pigpiod_if2
add_executable(x_pigpiod_if2 x_pigpiod_if2.c)
add_dependencies(x_pigpiod_if2 pigpiod_if2)
target_link_libraries(x_pigpiod_if2
${PIGPIO_FLAGS}
-lpigpiod_if2
)
target_link_libraries(x_pigpiod_if2 pigpiod_if2 RT::RT Threads::Threads)

# pigpiod
add_executable(pigpiod pigpiod.c)
add_dependencies(pigpiod pigpio)
target_link_libraries(pigpiod
${PIGPIO_FLAGS}
-lpigpio
)
target_link_libraries(pigpiod pigpio RT::RT Threads::Threads)

# pigs
add_executable(pigs pigs.c command.c)
target_link_libraries(pigs Threads::Threads)

# pig2vcd
add_executable(pig2vcd pig2vcd.c command.c)
target_link_libraries(pig2vcd Threads::Threads)

# install
install(DIRECTORY
DESTINATION ${DESTDIR}/opt/pigpio/cgi
PATTERN ""
PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
# Configure and install project

include (GenerateExportHeader)
include (CMakePackageConfigHelpers)

generate_export_header(${PROJECT_NAME})

install(TARGETS pigpio pigpiod_if pigpiod_if2 pig2vcd pigpiod pigs
LIBRARY DESTINATION ${DESTDIR}/usr/local/lib
RUNTIME DESTINATION ${DESTDIR}/usr/local/bin
ARCHIVE DESTINATION ${DESTDIR}/usr/local/lib
EXPORT ${PROJECT_NAME}Targets
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
INCLUDES DESTINATION include
)

write_basic_package_version_file(
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
VERSION ${${PROJECT_NAME}_VERSION}
COMPATIBILITY AnyNewerVersion
)

export(EXPORT ${PROJECT_NAME}Targets
FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake"
NAMESPACE pigpio::
)

set(ConfigPackageLocation lib/cmake/${PROJECT_NAME})
install(EXPORT ${PROJECT_NAME}Targets
FILE
${PROJECT_NAME}Targets.cmake
NAMESPACE
pigpio::
DESTINATION
${ConfigPackageLocation}
)

install(
FILES
${CMAKE_CURRENT_LIST_DIR}/cmake/${PROJECT_NAME}Config.cmake
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
DESTINATION
${ConfigPackageLocation}
)

install(FILES pigpio.h pigpiod_if.h pigpiod_if2.h
DESTINATION ${DESTDIR}/usr/local/include
DESTINATION include
PERMISSIONS OWNER_READ OWNER_WRITE
GROUP_READ
WORLD_READ
)

file(GLOB man_1_SRC "*.1")
install(FILES ${man_1_SRC}
DESTINATION ${DESTDIR}/usr/local/man/man1
DESTINATION man/man1
PERMISSIONS OWNER_READ OWNER_WRITE
GROUP_READ
WORLD_READ
)

file(GLOB man_3_SRC "*.3")
install(FILES ${man_3_SRC}
DESTINATION ${DESTDIR}/usr/local/man/man3
DESTINATION man/man3
PERMISSIONS OWNER_READ OWNER_WRITE
GROUP_READ
WORLD_READ
)

file(GLOB setup_SRC "setup.py")
find_program(PYTHON2_FOUND python2)
if(PYTHON2_FOUND)
install(CODE "execute_process(COMMAND cd ${CMAKE_SOURCE_DIR} && python2 ${setup_SRC} install)")
endif()
find_program(PYTHON3_FOUND python3)
if(PYTHON3_FOUND)
install(CODE "execute_process(COMMAND cd ${CMAKE_SOURCE_DIR} && python3 ${setup_SRC} install)")
endif()
# Install python modules.
find_package(Python COMPONENTS Interpreter QUIET)

install(CODE "execute_process(COMMAND ldconfig)")
if(Python_FOUND)
configure_file(${CMAKE_CURRENT_LIST_DIR}/cmake/setup.py.in
${CMAKE_CURRENT_BINARY_DIR}/setup.py
)

# uninstall
if(PYTHON2_FOUND)
set(PY2_CMD python2 ${setup_SRC} install --record /tmp/pigpio > /dev/null)
set(PY2_CMD ${PY2_CMD} && xargs rm -f < /tmp/pigpio > /dev/null)
install(CODE "execute_process(COMMAND ${Python_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/setup.py install)")
endif()

if(PYTHON3_FOUND)
set(PY3_CMD python3 ${setup_SRC} install --record /tmp/pigpio > /dev/null)
set(PY3_CMD ${PY3_CMD} && xargs rm -f < /tmp/pigpio > /dev/null)
endif()
# package project

add_custom_target(uninstall
COMMAND rm -f ${DESTDIR}/usr/local/include/pigpio.h
COMMAND rm -f ${DESTDIR}/usr/local/include/pigpiod_if.h
COMMAND rm -f ${DESTDIR}/usr/local/include/pigpiod_if2.h
COMMAND rm -f ${DESTDIR}/usr/local/lib/libpigpio.so
COMMAND rm -f ${DESTDIR}/usr/local/lib/libpigpiod_if.so
COMMAND rm -f ${DESTDIR}/usr/local/lib/libpigpiod_if2.so
COMMAND rm -f ${DESTDIR}/usr/local/bin/pig2vcd
COMMAND rm -f ${DESTDIR}/usr/local/bin/pigpiod
COMMAND rm -f ${DESTDIR}/usr/local/bin/pigs
COMMAND cd ${CMAKE_SOURCE_DIR} && ${PY2_CMD}
COMMAND cd ${CMAKE_SOURCE_DIR} && ${PY3_CMD}
COMMAND rm -f ${DESTDIR}/usr/local/man/man1/pig*.1
COMMAND rm -f ${DESTDIR}/usr/local/man/man3/pig*.3
COMMAND ldconfig
)
include (CPack)
39 changes: 39 additions & 0 deletions cmake/FindRT.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# FindRT.cmake - Try to find the RT library
# Once done this will define
#
# RT_FOUND - System has rt
# RT_INCLUDE_DIR - The rt include directory
# RT_LIBRARIES - The libraries needed to use rt
# RT_DEFINITIONS - Compiler switches required for using rt
#
# Also creates an import target called RT::RT

find_path (RT_INCLUDE_DIR NAMES time.h
PATHS
/usr
/usr/local
/opt
PATH_SUFFIXES
)

find_library(RT_LIBRARIES NAMES rt
PATHS
/usr
/usr/local
/opt
)

include(FindPackageHandleStandardArgs)

FIND_PACKAGE_HANDLE_STANDARD_ARGS(rt DEFAULT_MSG RT_LIBRARIES RT_INCLUDE_DIR)

mark_as_advanced(RT_INCLUDE_DIR RT_LIBRARIES)

if (NOT TARGET RT::RT)
add_library(RT::RT INTERFACE IMPORTED)

set_target_properties(RT::RT PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES ${RT_INCLUDE_DIR}
INTERFACE_LINK_LIBRARIES ${RT_LIBRARIES}
)
endif()
1 change: 1 addition & 0 deletions cmake/pigpioConfig.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include (${CMAKE_CURRENT_LIST_DIR}/pigpioTargets.cmake)
24 changes: 24 additions & 0 deletions cmake/setup.py.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/usr/bin/env python

from distutils.core import setup

setup(name='pigpio',
version='1.44',
author='joan',
author_email='[email protected]',
maintainer='joan',
maintainer_email='[email protected]',
url='http://abyz.me.uk/rpi/pigpio/python.html',
description='Raspberry Pi GPIO module',
long_description='Raspberry Pi Python module to access the pigpio daemon',
download_url='http://abyz.me.uk/rpi/pigpio/pigpio.zip',
license='unlicense.org',
py_modules=['pigpio'],
keywords=['raspberrypi', 'gpio',],
classifiers=[
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 3",
],
package_dir={ '': '${CMAKE_CURRENT_SOURCE_DIR}'}
)

46 changes: 36 additions & 10 deletions pigpio.3
Original file line number Diff line number Diff line change
Expand Up @@ -1682,6 +1682,15 @@ will be a latency.

.br

.br
If you want to track the level of more than one GPIO do so by
maintaining the state in the callback. Do not use \fBgpioRead\fP.
Remember the event that triggered the callback may have
happened several milliseconds before and the GPIO may have
changed level many times since then.

.br

.br
The tick value is the time stamp of the sample in microseconds, see
\fBgpioTick\fP for more details.
Expand Down Expand Up @@ -4181,12 +4190,6 @@ queue and the master removes it.

.br

.br
This function is not available on the BCM2711 (e.g. as
used in the Pi4B).

.br

.br
I can't get SPI to work properly. I tried with a
control word of 0x303 and swapped MISO and MOSI.
Expand Down Expand Up @@ -4249,14 +4252,37 @@ that mode until a different control word is sent.
.br

.br
The BSC peripheral uses GPIO 18 (SDA) and 19 (SCL) in I2C mode
and GPIO 18 (MOSI), 19 (SCLK), 20 (MISO), and 21 (CE) in SPI mode. You
need to swap MISO/MOSI between master and slave.
GPIO used for models other than those based on the BCM2711.

.br

.br
SDA SCL MOSI SCLK MISO CE
.br
I2C 18 19 - - - -
.br
SPI - - 18 19 20 21
.br

.br

.br
GPIO used for models based on the BCM2711 (e.g. the Pi4B).

.br

.br
SDA SCL MOSI SCLK MISO CE
.br
I2C 10 11 - - - -
.br
SPI - - 10 11 9 8
.br

.br

.br
When a zero control word is received GPIO 18-21 will be reset
When a zero control word is received the used GPIO will be reset
to INPUT mode.

.br
Expand Down
Loading

0 comments on commit f16fa17

Please sign in to comment.