Skip to content

Commit

Permalink
update release to version 0.5.8.2
Browse files Browse the repository at this point in the history
* 0.5.8.2.dev0:
  update to version 0.5.8.2
  fixed raw_input compatibility and other things
  fixed getBoardDisplayName open file
  fixing setup data_files
  added examples and fixed an example
  fixing "trimwhitespaces" C function
  fixing "printf" warning
  trying to fix build time
  • Loading branch information
Tungsteno74 committed Mar 9, 2019
2 parents 38b7c01 + bd6f70d commit 9466483
Show file tree
Hide file tree
Showing 9 changed files with 211 additions and 102 deletions.
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
SOFTWARE.
"""

__version__ = '0.5.8.1'
__version__ = '0.5.8.2'

classifiers = """\
Development Status :: 5 - Production/Stable
Expand Down Expand Up @@ -49,4 +49,4 @@
classifiers = list(filter(None, classifiers.split('\n'))),
packages = ['NPi'],
ext_modules = [Extension('NPi.GPIO', ['source/py_gpio.c', 'source/c_gpio.c', 'source/cpuinfo.c', 'source/event_gpio.c', 'source/soft_pwm.c', 'source/py_pwm.c', 'source/common.c', 'source/constants.c', 'source/boardtype_friendlyelec.c'])],
data_files = [('Lib/site-packages/NPi.GPIO', ['LICENSE', 'README.md', 'CHANGELOG.txt'])],)
data_files = [('/NPi' , ['LICENSE', 'README.md', 'CHANGELOG.txt'])])
97 changes: 49 additions & 48 deletions source/boardtype_friendlyelec.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ BoardHardwareInfo gAllBoardHardwareInfo[] = {
{"sun8i", 0, NanoPi_Duo, "NanoPi-Duo", "4(0)"},
{"sun8i", 0, NanoPi_NEO_Core, "NanoPi-NEO-Core", "5(0)"},
// kernel 4.x
{"Allwinnersun8iFamily", 0, NanoPi_M1, "NanoPi-M1", "0(0)"},
{"Allwinnersun8iFamily", 0, NanoPi_M1, "NanoPi-M1", "0(0)"},
{"Allwinnersun8iFamily", 0, NanoPi_NEO, "NanoPi-NEO", "1(0)"},
{"Allwinnersun8iFamily", 0, NanoPi_NEO_Air, "NanoPi-NEO-Air", "2(0)"},
{"Allwinnersun8iFamily", 0, NanoPi_M1_Plus, "NanoPi-M1-Plus", "3(0)"},
Expand Down Expand Up @@ -141,7 +141,7 @@ static int getAllwinnerBoardID(char* boardId, int boardIdMaxLen)
int ret = -1;

if (!(f = fopen("/sys/class/sunxi_info/sys_info", "r"))) {
LOGE("open /sys/class/sunxi_info/sys_info failed.");
LOGE("open /sys/class/sunxi_info/sys_info failed.\n");
return -1;
}

Expand Down Expand Up @@ -209,17 +209,17 @@ static char *trimwhitespaces(char *str)
static int getBoardDisplayName(char* boardName, int boardNameMaxLen)
{
int n, i, j;
char lineUntrim[1024], line[1024], *p;
char lineUntrim[1024], line[1024], *lineNoSpaces, *p;
const char* release_board_name_fieldname = "BOARD_NAME";
FILE *f;
int ret = -1;

if (!(f = fopen("/etc/friendlyelec-release", "r"))) {
LOGE("open /etc/friendlyelec-release failed. Will try an alternative.")
if (!(f == fopen("/etc/armibian-release", "r") {
LOGE("open /etc/armbian-release failed.");
return -1;
}
LOGE("open /etc/friendlyelec-release failed. Will try an alternative.\n");
if (!(f = fopen("/etc/armbian-release", "r"))) {
LOGE("open /etc/armbian-release failed.\n");
return -1;
}
}

while (!feof(f)) {
Expand All @@ -230,14 +230,14 @@ static int getBoardDisplayName(char* boardName, int boardNameMaxLen)
j = 0;

// Trim leading and traling spaces
lineUntrim = trimwhitespaces(lineUntrim);
lineNoSpaces = trimwhitespaces(lineUntrim);

// Substitute inner spaces with dashes "-" and remove not alphanumeric chars
for (i = 0; i < strlen(lineUntrim); i++) {
if (lineUntrim[i] == '"' || lineUntrim[i] == '\t' || lineUntrim[i] == '\r' || lineUntrim[i] == '\n') {
for (i = 0; i < strlen(lineNoSpaces); i++) {
if (lineNoSpaces[i] == '"' || lineNoSpaces[i] == '\t' || lineNoSpaces[i] == '\r' || lineNoSpaces[i] == '\n') {
}
else {
line[j++] = (lineUntrim[i] == '') ? '-' : lineUntrim[i];
line[j++] = (lineNoSpaces[i] == ' ') ? '-' : lineNoSpaces[i];
}
}
line[j] = 0x00;
Expand All @@ -263,10 +263,12 @@ static int getBoardDisplayName(char* boardName, int boardNameMaxLen)
return ret;
}

int getBoardType(BoardHardwareInfo** retBoardInfo) {
int getBoardType(BoardHardwareInfo** retBoardInfo)
{
char hardware[255];
char revision[255];
char boardDisplayName[255];
char allwinnerBoardID[255];
int ret;
int i;
memset(hardware, 0, sizeof(hardware));
Expand Down Expand Up @@ -304,7 +306,7 @@ int getBoardType(BoardHardwareInfo** retBoardInfo) {
|| strncasecmp(hardware, h3_kernel4, strlen(h3_kernel4)) == 0 || strncasecmp(hardware, h5_kernel4, strlen(h5_kernel4)) == 0) {
int ret = getAllwinnerBoardID(allwinnerBoardID, sizeof(allwinnerBoardID));
if (ret == 0) {
LOGD("got boardid: %s\n", allwinnerBoardID);
//LOGD("got boardid: %s\n", allwinnerBoardID);
for (i = 0; i < (sizeof(gAllBoardHardwareInfo) / sizeof(BoardHardwareInfo)); i++) {
//LOGD("\t\t enum, start compare[%d]: %s <--> %s\n", i, gAllBoardHardwareInfo[i].kernelHardware, hardware);
if (strncasecmp(gAllBoardHardwareInfo[i].kernelHardware, hardware, strlen(gAllBoardHardwareInfo[i].kernelHardware)) == 0) {
Expand All @@ -317,10 +319,11 @@ int getBoardType(BoardHardwareInfo** retBoardInfo) {
}
//LOGD("\t\t enum, end compare[%d]\n", i);
}
}
else {
ret = getBoardDisplayName(boardDisplayName, sizeof(boardDisplayName));
if (ret == 0) {
LOGD("got boardDisplayName: %s\n", boardDisplayName);
//LOGD("got boardDisplayName: %s\n", boardDisplayName);
for (i = 0; i < (sizeof(gAllBoardHardwareInfo) / sizeof(BoardHardwareInfo)); i++) {
//LOGD("\t\t enum, start compare[%d]: %s <--> %s\n", i, gAllBoardHardwareInfo[i].kernelHardware, hardware);
if (strncasecmp(gAllBoardHardwareInfo[i].kernelHardware, hardware, strlen(gAllBoardHardwareInfo[i].kernelHardware)) == 0) {
Expand All @@ -336,45 +339,43 @@ int getBoardType(BoardHardwareInfo** retBoardInfo) {
}
}
return -1;
}
}

if (strlen(revision) == 0) {
//LOGD("failed, revision is empty.");
return -1;
}
if (strlen(revision) == 0) {
//LOGD("failed, revision is empty.");
return -1;
}

char revision2[255];
sprintf(revision2, "0x%s", revision);
int iRev;
iRev = strtol(revision2, NULL, 16);
char revision2[255];
sprintf(revision2, "0x%s", revision);
int iRev;
iRev = strtol(revision2, NULL, 16);

// other, check hardware and revision
for (i = 0; i < (sizeof(gAllBoardHardwareInfo) / sizeof(BoardHardwareInfo)); i++) {
if (strncasecmp(gAllBoardHardwareInfo[i].kernelHardware, hardware, strlen(gAllBoardHardwareInfo[i].kernelHardware)) == 0) {
if (gAllBoardHardwareInfo[i].kernelRevision == -1
|| gAllBoardHardwareInfo[i].kernelRevision == iRev
) {
if (retBoardInfo != 0) {
*retBoardInfo = &gAllBoardHardwareInfo[i];
}
return gAllBoardHardwareInfo[i].boardTypeId;
// other, check hardware and revision
for (i = 0; i < (sizeof(gAllBoardHardwareInfo) / sizeof(BoardHardwareInfo)); i++) {
if (strncasecmp(gAllBoardHardwareInfo[i].kernelHardware, hardware, strlen(gAllBoardHardwareInfo[i].kernelHardware)) == 0) {
if (gAllBoardHardwareInfo[i].kernelRevision == -1 || gAllBoardHardwareInfo[i].kernelRevision == iRev) {
if (retBoardInfo != 0) {
*retBoardInfo = &gAllBoardHardwareInfo[i];
}
return gAllBoardHardwareInfo[i].boardTypeId;
}
}
return -1;
}
return -1;
}

/*
int main() {
BoardHardwareInfo* retBoardInfo;
int boardId;
boardId = getBoardType(&retBoardInfo);
if (boardId >= 0) {
printf("boardName:%s,boardId:%d\n", retBoardInfo->boardDisplayName, boardId);
} else {
printf("%s, ret:%d\n", "failed", boardId);
}
return 0;
/*
int main() {
BoardHardwareInfo* retBoardInfo;
int boardId;
boardId = getBoardType(&retBoardInfo);
if (boardId >= 0) {
printf("boardName:%s,boardId:%d\n", retBoardInfo->boardDisplayName, boardId);
} else {
printf("%s, ret:%d\n", "failed", boardId);
}
*/
return 0;
}
*/
1 change: 1 addition & 0 deletions source/c_gpio.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
*/

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <fcntl.h>
Expand Down
94 changes: 47 additions & 47 deletions source/constants.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,70 +28,70 @@ SOFTWARE.

void define_constants(PyObject *module)
{
high = Py_BuildValue("i", HIGH);
PyModule_AddObject(module, "HIGH", high);
high = Py_BuildValue("i", HIGH);
PyModule_AddObject(module, "HIGH", high);

low = Py_BuildValue("i", LOW);
PyModule_AddObject(module, "LOW", low);
low = Py_BuildValue("i", LOW);
PyModule_AddObject(module, "LOW", low);

output = Py_BuildValue("i", OUTPUT);
PyModule_AddObject(module, "OUT", output);
output = Py_BuildValue("i", OUTPUT);
PyModule_AddObject(module, "OUT", output);

input = Py_BuildValue("i", INPUT);
PyModule_AddObject(module, "IN", input);
input = Py_BuildValue("i", INPUT);
PyModule_AddObject(module, "IN", input);

pwm = Py_BuildValue("i", PWM);
PyModule_AddObject(module, "HARD_PWM", pwm);
pwm = Py_BuildValue("i", PWM);
PyModule_AddObject(module, "HARD_PWM", pwm);

serial = Py_BuildValue("i", SERIAL);
PyModule_AddObject(module, "SERIAL", serial);
serial = Py_BuildValue("i", SERIAL);
PyModule_AddObject(module, "SERIAL", serial);

i2c = Py_BuildValue("i", I2C);
PyModule_AddObject(module, "I2C", i2c);
i2c = Py_BuildValue("i", I2C);
PyModule_AddObject(module, "I2C", i2c);

spi = Py_BuildValue("i", SPI);
PyModule_AddObject(module, "SPI", spi);
spi = Py_BuildValue("i", SPI);
PyModule_AddObject(module, "SPI", spi);

unknown = Py_BuildValue("i", MODE_UNKNOWN);
PyModule_AddObject(module, "UNKNOWN", unknown);
unknown = Py_BuildValue("i", MODE_UNKNOWN);
PyModule_AddObject(module, "UNKNOWN", unknown);

board = Py_BuildValue("i", BOARD);
PyModule_AddObject(module, "BOARD", board);
board = Py_BuildValue("i", BOARD);
PyModule_AddObject(module, "BOARD", board);

bcm = Py_BuildValue("i", BCM);
PyModule_AddObject(module, "BCM", bcm);
bcm = Py_BuildValue("i", BCM);
PyModule_AddObject(module, "BCM", bcm);

raw = Py_BuildValue("i", MODE_RAW);
PyModule_AddObject(module, "RAW", raw);
raw = Py_BuildValue("i", MODE_RAW);
PyModule_AddObject(module, "RAW", raw);

pud_off = Py_BuildValue("i", PUD_OFF + PY_PUD_CONST_OFFSET);
PyModule_AddObject(module, "PUD_OFF", pud_off);
pud_off = Py_BuildValue("i", PUD_OFF + PY_PUD_CONST_OFFSET);
PyModule_AddObject(module, "PUD_OFF", pud_off);

pud_up = Py_BuildValue("i", PUD_UP + PY_PUD_CONST_OFFSET);
PyModule_AddObject(module, "PUD_UP", pud_up);
pud_up = Py_BuildValue("i", PUD_UP + PY_PUD_CONST_OFFSET);
PyModule_AddObject(module, "PUD_UP", pud_up);

pud_down = Py_BuildValue("i", PUD_DOWN + PY_PUD_CONST_OFFSET);
PyModule_AddObject(module, "PUD_DOWN", pud_down);
pud_down = Py_BuildValue("i", PUD_DOWN + PY_PUD_CONST_OFFSET);
PyModule_AddObject(module, "PUD_DOWN", pud_down);

rising_edge = Py_BuildValue("i", RISING_EDGE + PY_EVENT_CONST_OFFSET);
PyModule_AddObject(module, "RISING", rising_edge);
rising_edge = Py_BuildValue("i", RISING_EDGE + PY_EVENT_CONST_OFFSET);
PyModule_AddObject(module, "RISING", rising_edge);

falling_edge = Py_BuildValue("i", FALLING_EDGE + PY_EVENT_CONST_OFFSET);
PyModule_AddObject(module, "FALLING", falling_edge);
falling_edge = Py_BuildValue("i", FALLING_EDGE + PY_EVENT_CONST_OFFSET);
PyModule_AddObject(module, "FALLING", falling_edge);

both_edge = Py_BuildValue("i", BOTH_EDGE + PY_EVENT_CONST_OFFSET);
PyModule_AddObject(module, "BOTH", both_edge);
both_edge = Py_BuildValue("i", BOTH_EDGE + PY_EVENT_CONST_OFFSET);
PyModule_AddObject(module, "BOTH", both_edge);

version = Py_BuildValue("s", "0.5.8");
PyModule_AddObject(module, "VERSION", version);
version = Py_BuildValue("s", "0.5.8.2");
PyModule_AddObject(module, "VERSION", version);

PyModule_AddObject(module, "PA", Py_BuildValue("i", 0));
PyModule_AddObject(module, "PB", Py_BuildValue("i", 32));
PyModule_AddObject(module, "PC", Py_BuildValue("i", 64));
PyModule_AddObject(module, "PD", Py_BuildValue("i", 96));
PyModule_AddObject(module, "PE", Py_BuildValue("i", 128));
PyModule_AddObject(module, "PF", Py_BuildValue("i", 160));
PyModule_AddObject(module, "PG", Py_BuildValue("i", 192));
PyModule_AddObject(module, "PH", Py_BuildValue("i", 224));
PyModule_AddObject(module, "PI", Py_BuildValue("i", 256));
PyModule_AddObject(module, "PA", Py_BuildValue("i", 0));
PyModule_AddObject(module, "PB", Py_BuildValue("i", 32));
PyModule_AddObject(module, "PC", Py_BuildValue("i", 64));
PyModule_AddObject(module, "PD", Py_BuildValue("i", 96));
PyModule_AddObject(module, "PE", Py_BuildValue("i", 128));
PyModule_AddObject(module, "PF", Py_BuildValue("i", 160));
PyModule_AddObject(module, "PG", Py_BuildValue("i", 192));
PyModule_AddObject(module, "PH", Py_BuildValue("i", 224));
PyModule_AddObject(module, "PI", Py_BuildValue("i", 256));
}
2 changes: 1 addition & 1 deletion test/event_detect.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@
switchcount += 1
print('Button pressed',switchcount)
print("\n value_%d = %d\n" %(SWITCH_PIN,GPIO.input(SWITCH_PIN)))

GPIO.remove_event_detect(SWITCH_PIN)
56 changes: 56 additions & 0 deletions test/gpio_interactive_test.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#!/usr/bin/env python
from __future__ import print_function
import sys
try:
import NPi.GPIO as GPIO
except RuntimeError:
print("Error importing GPIO modules! This is probably because you need superuser privileges. You can achieve this by using 'sudo' to run your script")
sys.exit(-1)
import time

try:
input = raw_input
except NameError:
pass

print("Inizializing...\n")
range_pins = [3,24] #range of board GPIO pins to check
inv_pins = [4,6,9,14,17,20] #pins that aren't onboard GPIOs
v_modes_str = ["LOW","HIGH"]


GPIO.setmode(GPIO.BOARD)

time.sleep(0.2)

#print "Board revision:"
#print GPIO.RPI_INFO
#print GPIO.RPI_REVISION
print("\nNPi.GPIO version:")
print(GPIO.VERSION)

time.sleep(1)

while True:
try:
pin = int(input('Choose board pin number: \n( 3 - 24; excluded: 4, 6, 9, 14, 17, 20 )\n'))
mode = int(input('Choose pin state: \n( 0 - Low, 1 - High, 2 - Quit )\n'))
print("\n\nChoosen %d (state %s)\n" % (mode, v_modes_str[mode]))
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, mode)
time.sleep(0.5)
print("Pin state changed!\n")
#GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_OFF)
time.sleep(0.5)
print("Now pin %d state is: %s\n" % (pin, v_modes_str[GPIO.input(pin)]))
time.sleep(3)
except ValueError:
print("Not a number")
continue
except IndexError:
if mode == 2:
GPIO.cleanup()
print("Bye :-(\n")
break
print("Not a valid pin or mode")
continue
Loading

0 comments on commit 9466483

Please sign in to comment.