From add98f2f5788d2ee9f8104881fd0a2bc97f2c209 Mon Sep 17 00:00:00 2001 From: "R. Steve McKown" Date: Fri, 15 Mar 2013 09:04:38 -0600 Subject: [PATCH] Update tos-bsl for win32 python tos-bsl uses the cp210xrt module, whose source is provided herein. This is a simple extension for Python that allows access to the CP210x_WriteLatch function in the CP210xRuntime.dll. The compiled Python extension module is included, as well as the runtime dll and its associated .lib and .h files. The module was compiled using Visual Studio C++ Express 2008, which is apparently the same version of the MSVC used to compile ActivePython 2.7.1 from ActiveState, on which the module was tested. This uses the latest CP210xRuntime.dll and requires a 6.x version of the SiLabs VCP to be installed. Tested with VCP_Windows v6.6.1. The code changes should not change behavior on non-win32 platforms. --- .../msp430/pybsl/cp210x_rt/CP210xRuntime.lib | Bin 2760 -> 0 bytes .../msp430/pybsl/cp210x_rt/CP210xRuntimeDLL.h | 56 ---------- .../cp210xrt-0.1.cygwin-1.5.12-i686.tar.gz | Bin 110823 -> 0 bytes .../pybsl/cp210x_rt/dist/cp210xrt-0.1.tar.gz | Bin 1384 -> 0 bytes .../platforms/msp430/pybsl/cp210x_rt/setup.py | 10 -- .../msp430/pybsl/cp210x_rt/test/reset.py | 21 ---- .../msp430/pybsl/cp210xrt/CP210xRuntime.dll | Bin 0 -> 61440 bytes .../msp430/pybsl/cp210xrt/CP210xRuntime.lib | Bin 0 -> 3696 bytes .../msp430/pybsl/cp210xrt/CP210xRuntimeDLL.h | 100 ++++++++++++++++++ .../cp210xrt.cpp} | 67 +++--------- .../msp430/pybsl/cp210xrt/cp210xrt.pyd | Bin 0 -> 7168 bytes .../platforms/msp430/pybsl/cp210xrt/setup.py | 22 ++++ .../msp430/pybsl/cp210xrt/test/reset.py | 21 ++++ tools/platforms/msp430/pybsl/tos-bsl.in | 42 ++++---- 14 files changed, 181 insertions(+), 158 deletions(-) delete mode 100644 tools/platforms/msp430/pybsl/cp210x_rt/CP210xRuntime.lib delete mode 100644 tools/platforms/msp430/pybsl/cp210x_rt/CP210xRuntimeDLL.h delete mode 100644 tools/platforms/msp430/pybsl/cp210x_rt/dist/cp210xrt-0.1.cygwin-1.5.12-i686.tar.gz delete mode 100644 tools/platforms/msp430/pybsl/cp210x_rt/dist/cp210xrt-0.1.tar.gz delete mode 100644 tools/platforms/msp430/pybsl/cp210x_rt/setup.py delete mode 100644 tools/platforms/msp430/pybsl/cp210x_rt/test/reset.py create mode 100755 tools/platforms/msp430/pybsl/cp210xrt/CP210xRuntime.dll create mode 100644 tools/platforms/msp430/pybsl/cp210xrt/CP210xRuntime.lib create mode 100644 tools/platforms/msp430/pybsl/cp210xrt/CP210xRuntimeDLL.h rename tools/platforms/msp430/pybsl/{cp210x_rt/cp210xrtmodule.c => cp210xrt/cp210xrt.cpp} (56%) create mode 100755 tools/platforms/msp430/pybsl/cp210xrt/cp210xrt.pyd create mode 100644 tools/platforms/msp430/pybsl/cp210xrt/setup.py create mode 100644 tools/platforms/msp430/pybsl/cp210xrt/test/reset.py mode change 100644 => 100755 tools/platforms/msp430/pybsl/tos-bsl.in diff --git a/tools/platforms/msp430/pybsl/cp210x_rt/CP210xRuntime.lib b/tools/platforms/msp430/pybsl/cp210x_rt/CP210xRuntime.lib deleted file mode 100644 index e5d4b93af6f319346a3719793d9bd3d19e27e0b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2760 zcmc&$y>HV{5I-kvLS2Taup${zp|a$w&Ib~rPMfHW>ZX>PijSeLn-~%)AysfBwyq5P z35*OK8BwPU3=GW7jQKCZo$VJpA9flA#7Xw^-TUR_s(p#4bZg8sVq;!;A#wKqpAm|l|!vqs1{(ynXYQ8q1R>ItTiO*)&7A} zc&QXh(ra|wY+q_~VJ_fBw`m$E0 z*I|I02*4l;&__cNYnG=8kB}OH6<7rhLe5v%li7gq-0k|L-v#(2Y>C#GENwuXlTe>% zCt*G@Uj_GMVxnmC7?sL1rk(R+p5yga3lfZY4rrdYT-xmbnG3`EM}Bv}0o=hV{|4aJ zIc$d@iQ!}jupj&dn+gSigdL5JN~ZrP@w#!*d%JnULcjwETDX6&ND$kNH|x5oZ>E|3 zK7M>b+&2eHdz2vAcW_yT+rW=s9vs;v5c-%h%&|=^F1ZEwVn{i#Ge!IY7z!Il&04qf zzVpTuw$vwrT&^6VeOm6KiGE2Q>`FwfRIggL=^l}4o%SULIuur5IAp7`3Q}YtVEdKu zARtSFS*)GWYGGy(34;a~lW{F%e@rh&$QQtlqtOt8Gkh;W?0NiJkP&GyH98YzE@Uy{ zs}(0j3*4-ZsasR-%hNI2%t{^enJLal9rHIk;Wm|hfNT5SpZucdM>?1BWXnE3e&Pyt zoo8q3(^M8l{K~K?>c;O(aYhfnL^egZA58J!md)yIGWiJCo6~#?=W~=!f&MQMJ7tc} tg&efbMwxK;SYn4`~?62 diff --git a/tools/platforms/msp430/pybsl/cp210x_rt/CP210xRuntimeDLL.h b/tools/platforms/msp430/pybsl/cp210x_rt/CP210xRuntimeDLL.h deleted file mode 100644 index f6fa9a7c..00000000 --- a/tools/platforms/msp430/pybsl/cp210x_rt/CP210xRuntimeDLL.h +++ /dev/null @@ -1,56 +0,0 @@ - -// The following ifdef block is the standard way of creating macros which make exporting -// from a DLL simpler. All files within this DLL are compiled with the CP210xRUNTIMEDLL_EXPORTS -// symbol defined on the command line. this symbol should not be defined on any project -// that uses this DLL. This way any other project whose source files include this file see -// CP210xRUNTIMEDLL_API functions as being imported from a DLL, wheras this DLL sees symbols -// defined with this macro as being exported. -#ifdef CP210xRUNTIMEDLL_EXPORTS -#define CP210xRUNTIMEDLL_API __declspec(dllexport) -#else -#define CP210xRUNTIMEDLL_API __declspec(dllimport) -#endif - -#define CP210x_MAX_SETUP_LENGTH 65536 - -#ifndef _CP210x_STANDARD_DEF_ -#define _CP210x_STANDARD_DEF_ -// GetDeviceVersion() return codes -#define CP210x_CP2101_VERSION 0x01 -#define CP210x_CP2102_VERSION 0x02 -#define CP210x_CP2103_VERSION 0x03 - -// Return codes -#define CP210x_SUCCESS 0x00 -#define CP210x_DEVICE_NOT_FOUND 0xFF -#define CP210x_INVALID_HANDLE 0x01 -#define CP210x_INVALID_PARAMETER 0x02 -#define CP210x_DEVICE_IO_FAILED 0x03 -#define CP210x_FUNCTION_NOT_SUPPORTED 0x04 -#define CP210x_GLOBAL_DATA_ERROR 0x05 -#define CP210x_COMMAND_FAILED 0x08 -#define CP210x_INVALID_ACCESS_TYPE 0x09 - -// Type definitions -typedef int CP210x_STATUS; -#endif /*_CP210x_STANDARD_DEF_*/ - -// Mask and Latch value bit definitions -#define CP210x_GPIO_0 0x01 -#define CP210x_GPIO_1 0x02 -#define CP210x_GPIO_2 0x04 -#define CP210x_GPIO_3 0x08 - -CP210xRUNTIMEDLL_API CP210x_STATUS WINAPI -CP210xRT_ReadLatch( HANDLE cyHandle, - LPBYTE lpbLatch); - -CP210xRUNTIMEDLL_API CP210x_STATUS WINAPI -CP210xRT_WriteLatch( HANDLE cyHandle, - BYTE bMask, - BYTE bLatch); - - -CP210xRUNTIMEDLL_API CP210x_STATUS WINAPI -CP210xRT_GetPartNumber( HANDLE cyHandle, - LPBYTE lpbPartNum); diff --git a/tools/platforms/msp430/pybsl/cp210x_rt/dist/cp210xrt-0.1.cygwin-1.5.12-i686.tar.gz b/tools/platforms/msp430/pybsl/cp210x_rt/dist/cp210xrt-0.1.cygwin-1.5.12-i686.tar.gz deleted file mode 100644 index 7c2aa956f45e0771d570015fba8ac6708c9ce5c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110823 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 diff --git a/tools/platforms/msp430/pybsl/cp210x_rt/setup.py b/tools/platforms/msp430/pybsl/cp210x_rt/setup.py deleted file mode 100644 index 859bc2c5..00000000 --- a/tools/platforms/msp430/pybsl/cp210x_rt/setup.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/python - -from distutils.core import setup, Extension - -module1 = Extension('cp210xrt', sources = ['cp210xrtmodule.c']) - -setup(name = 'cp210xrt', version = '0.1', - description = 'Interface to cp210x runtime dll', - ext_modules = [module1]) - diff --git a/tools/platforms/msp430/pybsl/cp210x_rt/test/reset.py b/tools/platforms/msp430/pybsl/cp210x_rt/test/reset.py deleted file mode 100644 index 3a58b1f9..00000000 --- a/tools/platforms/msp430/pybsl/cp210x_rt/test/reset.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/python - -import sys, os, time, serial, cp210xrt; - -sys.stderr.write("os.name is %s\n" % os.name); -sys.stderr.write("sys.platform is %s\n" % sys.platform); - -serialport = serial.Serial(9, 9600, parity = serial.PARITY_EVEN, - timeout = 1000) -sys.stderr.write("using serial port %r\n" % serialport.portstr) -sys.stderr.write("serial port fd is %d\n" % serialport.fd) -#sys.stderr.write("serial port HANDLE is %d\n" % _get_osfhandle(serialport.fd)) - - -sys.stderr.write("clear bit...\n") -cp210xrt.writeLatch(serialport.fd, 0x04, 0x0) -sys.stderr.write("clear bit done\n") -time.sleep(0.250) -sys.stderr.write("set bit...\n") -cp210xrt.writeLatch(serialport.fd, 0x04, 0x04) - diff --git a/tools/platforms/msp430/pybsl/cp210xrt/CP210xRuntime.dll b/tools/platforms/msp430/pybsl/cp210xrt/CP210xRuntime.dll new file mode 100755 index 0000000000000000000000000000000000000000..f4e97a93f03417d04988e6387afcc8e40434dc83 GIT binary patch literal 61440 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 lO)!I+A7qmCE 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 literal 0 HcmV?d00001 diff --git a/tools/platforms/msp430/pybsl/cp210xrt/CP210xRuntimeDLL.h b/tools/platforms/msp430/pybsl/cp210xrt/CP210xRuntimeDLL.h new file mode 100644 index 00000000..ac6b1581 --- /dev/null +++ b/tools/platforms/msp430/pybsl/cp210xrt/CP210xRuntimeDLL.h @@ -0,0 +1,100 @@ + +// The following ifdef block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the CP210xRUNTIMEDLL_EXPORTS +// symbol defined on the command line. this symbol should not be defined on any project +// that uses this DLL. This way any other project whose source files include this file see +// CP210xRUNTIMEDLL_API functions as being imported from a DLL, wheras this DLL sees symbols +// defined with this macro as being exported. +#ifdef CP210xRUNTIMEDLL_EXPORTS +#define CP210xRUNTIMEDLL_API __declspec(dllexport) +#else +#define CP210xRUNTIMEDLL_API __declspec(dllimport) +#endif + +#ifndef _CP210x_STANDARD_DEF_ +#define _CP210x_STANDARD_DEF_ + +// GetDeviceVersion() return codes +#define CP210x_CP2101_VERSION 0x01 +#define CP210x_CP2102_VERSION 0x02 +#define CP210x_CP2103_VERSION 0x03 +#define CP210x_CP2104_VERSION 0x04 +#define CP210x_CP2105_VERSION 0x05 +#define CP210x_CP2108_VERSION 0x08 + +// Return codes +#define CP210x_SUCCESS 0x00 +#define CP210x_DEVICE_NOT_FOUND 0xFF +#define CP210x_INVALID_HANDLE 0x01 +#define CP210x_INVALID_PARAMETER 0x02 +#define CP210x_DEVICE_IO_FAILED 0x03 +#define CP210x_FUNCTION_NOT_SUPPORTED 0x04 +#define CP210x_GLOBAL_DATA_ERROR 0x05 +#define CP210x_FILE_ERROR 0x06 +#define CP210x_COMMAND_FAILED 0x08 +#define CP210x_INVALID_ACCESS_TYPE 0x09 + +// Type definitions +typedef int CP210x_STATUS; + +// Buffer size limits +#define CP210x_MAX_PRODUCT_STRLEN 126 +#define CP210x_MAX_SERIAL_STRLEN 63 + +// Type definitions +typedef char CP210x_PRODUCT_STRING[CP210x_MAX_PRODUCT_STRLEN]; +typedef char CP210x_SERIAL_STRING[CP210x_MAX_SERIAL_STRLEN]; + +#endif //_CP210x_STANDARD_DEF + +// Mask and Latch value bit definitions +#define CP210x_GPIO_0 0x0001 +#define CP210x_GPIO_1 0x0002 +#define CP210x_GPIO_2 0x0004 +#define CP210x_GPIO_3 0x0008 +#define CP210x_GPIO_4 0x0010 +#define CP210x_GPIO_5 0x0020 +#define CP210x_GPIO_6 0x0040 +#define CP210x_GPIO_7 0x0080 +#define CP210x_GPIO_8 0x0100 +#define CP210x_GPIO_9 0x0200 +#define CP210x_GPIO_10 0x0400 +#define CP210x_GPIO_11 0x0800 +#define CP210x_GPIO_12 0x1000 +#define CP210x_GPIO_13 0x2000 +#define CP210x_GPIO_14 0x4000 +#define CP210x_GPIO_15 0x8000 + +CP210xRUNTIMEDLL_API CP210x_STATUS WINAPI +CP210xRT_ReadLatch( HANDLE cyHandle, + LPWORD lpLatch); + +CP210xRUNTIMEDLL_API CP210x_STATUS WINAPI +CP210xRT_WriteLatch(HANDLE cyHandle, + WORD mask, + WORD latch); + + +CP210xRUNTIMEDLL_API CP210x_STATUS WINAPI +CP210xRT_GetPartNumber(HANDLE cyHandle, + LPBYTE lpbPartNum); + +CP210xRUNTIMEDLL_API CP210x_STATUS WINAPI +CP210xRT_GetDeviceProductString(HANDLE cyHandle, + LPVOID lpProduct, + LPBYTE lpbLength, + BOOL bConvertToASCII = TRUE + ); + +CP210xRUNTIMEDLL_API CP210x_STATUS WINAPI +CP210xRT_GetDeviceSerialNumber(HANDLE cyHandle, + LPVOID lpSerialNumber, + LPBYTE lpbLength, + BOOL bConvertToASCII = TRUE + ); + +CP210xRUNTIMEDLL_API CP210x_STATUS WINAPI +CP210xRT_GetDeviceInterfaceString(HANDLE cyHandle, + LPVOID lpInterfaceString, + LPBYTE lpbLength, + BOOL bConvertToASCII); diff --git a/tools/platforms/msp430/pybsl/cp210x_rt/cp210xrtmodule.c b/tools/platforms/msp430/pybsl/cp210xrt/cp210xrt.cpp similarity index 56% rename from tools/platforms/msp430/pybsl/cp210x_rt/cp210xrtmodule.c rename to tools/platforms/msp430/pybsl/cp210xrt/cp210xrt.cpp index 860c03d3..fae7247a 100644 --- a/tools/platforms/msp430/pybsl/cp210x_rt/cp210xrtmodule.c +++ b/tools/platforms/msp430/pybsl/cp210xrt/cp210xrt.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, Titanium Mirror, Inc. + * Copyright (c) 2010-2013, Titanium Mirror, Inc. * All rights reserved. * Based upon work Copyright (c) 2006-2007 by Sporian Microsystems, Inc. * @@ -32,85 +32,52 @@ * @author R. Steve McKown */ -#include -#include +#include "Python.h" +#include "windows.h" #include -#include #include "CP210xRuntimeDLL.h" -typedef CP210xRUNTIMEDLL_API CP210x_STATUS WINAPI (*fn_t)(HANDLE, BYTE, BYTE); -void* dll; -fn_t writeLatch; -PyObject* exception; +static PyObject* exception; -static PyObject* cp210xrt_writeLatch(PyObject* self, PyObject* args) +static PyObject* ex_writeLatch(PyObject* self, PyObject* args) { - int fd; BYTE bMask; BYTE bData; HANDLE hDevice; CP210x_STATUS ret; - if (!PyArg_ParseTuple(args, "iBB", &fd, &bMask, &bData)) + if (!PyArg_ParseTuple(args, "iBB", &hDevice, &bMask, &bData)) return NULL; - if (!writeLatch) { - PyErr_SetString(exception, "No access to CP210xRuntime.dll"); - return NULL; - } - hDevice = (HANDLE)get_osfhandle(fd); - if (hDevice == INVALID_HANDLE_VALUE) - { - PyErr_SetString(exception, "No access to device"); - return NULL; + if (hDevice == INVALID_HANDLE_VALUE) { + PyErr_SetString(exception, "No access to device"); + return NULL; } - /* If we don't call writeLatch, then we don't core dump when we return to - * the python caller. If we do call writeLatch, the latches are set, but - * when we return return into python, perhaps the stack has been corrupted - * somehow. We get a stackdump from cygwin. - * - * Note: when we opened the handle here, via CreateFile(), then closed it - * before returning, we had no problems. - */ - ret = writeLatch(hDevice, bMask, bData); + ret = CP210xRT_WriteLatch(hDevice, bMask, bData); if (ret != CP210x_SUCCESS) { - PyErr_SetString(exception, "IO Error with device"); - return NULL; + PyErr_SetString(exception, "IO Error with device"); + return NULL; } -#if 1 Py_INCREF(Py_None); return Py_None; -#else - return Py_BuildValue("i", ret); -#endif + //return Py_BuildValue("i", ret); } -static PyMethodDef cp210xrtMethods[] = { - { "writeLatch", cp210xrt_writeLatch, METH_VARARGS, "Set GPIO bits" }, - { NULL, NULL, 0, NULL } +static PyMethodDef cp210xrt_methods[] = { + { "writeLatch", ex_writeLatch, METH_VARARGS, "Set GPIO bits" }, + { NULL, NULL } }; PyMODINIT_FUNC initcp210xrt(void) { - PyObject* m = Py_InitModule("cp210xrt", cp210xrtMethods); + PyObject* m = Py_InitModule("cp210xrt", cp210xrt_methods); exception = PyErr_NewException("cp210xrt.error", NULL, NULL); Py_INCREF(exception); PyModule_AddObject(m, "error", exception); - - if (!dll) { - dll = dlopen("CP210xRuntime.dll", RTLD_NOW); - if (dll) { - dlerror(); - writeLatch = (fn_t)dlsym(dll, "CP210xRT_WriteLatch"); - if (dlerror()) - writeLatch = NULL; - } - } } - diff --git a/tools/platforms/msp430/pybsl/cp210xrt/cp210xrt.pyd b/tools/platforms/msp430/pybsl/cp210xrt/cp210xrt.pyd new file mode 100755 index 0000000000000000000000000000000000000000..b3f67f71fbdb8856071cb515ce2d93ca33c12824 GIT binary patch literal 7168 zcmeHLeNbFi6~7BhSdyh|J8X-lwhJYhOq;;luk3DtNCIoY09gVdp-J^|5f`_;Ga zQE-|{X9Jz>3pHxh{*iHl{L!lQb7C5;w%dZmShTUDm}+N42kXXUEH#?o6!ZMuy9?Q* z(QzCdb*48t_uPBVx#!$-?z!i_rS<-!B%ctX1*j?^r+{gzXZ=6!=D@z`&hOkrP89v9 z{FJ8UN9CP?VB8cFqkW<`Z1Q;{k*H+q5lo^SF$E*0#vL7|aMUkU6&J6r%&Ij#gp5-m-VJoZ;=G_WRR5p z$4y9!rho`fG_)_%=15-o8ch))tEmGSYP1yC05Gw+fsOMBDPYs9m>d8B!TQC+gn*5P zMReT?&Z=1tyP)bT2=P;PJt1#u=-|5MA!Of;=+}wWmtS`#CPJRMP9}F+B?*HP2#>=} zwm<4CJ>;BbBIH1o==VxqLPD#+0Daa02u!XFIH%Q9eWDPGLhvZ{9Wh{XAIuTLu%3`@*HYe}{ktQOxS$(rtjzN$jg_Ti zEtQ4sW1W@yoq?2z7(A-+Nub13=}1bt0|MH_qAIUdiaCxL0#jhMtH!68gwC2uOz9>| zPIgx2l|1)Diu2nsXon7Dl>rLYDn_>MET%iJTQ`0TM3pc^^~_vtU4cI%Eitum|D>XJ1%?qg)%Y+-%0icF9LAu# zd*Wd$F-#1i8@VJGSX1@;Cll*QdK>OZVAx0u>2i#wwUwVL#n^~(w>3r8?NTnZw_8&# zw_d)fC7!AvM#|ZGkl0RgF#v^po8k>g-5L{@wY)X}2B%WIP7>{=EH&XHoy1>1I@? z^R48_UE*zR z%^|(mp7=14E~-X}`cf#JQyuDT(!H1=Bn#DDiy5`*tZJu9C~sD2T}({rU9ASWz~$CS zCz7p(WUD^u)+vkUpH^kPY8-^R?u-(aE-Z1ZsRr&EgLbfE`OEvGv1{X^mS(j{`KldE`t67i=5?Au% zs&Nh)YF?6bySqBnGgzBAG*3zne;P8Nq~m{8RS;=dhO?vwSfg@RG;$>}$F$qik*)@9 zcR%S!H$a}L#F4I|6!px=C2A^PZlL<^0w0U=%QJ?gjC}~NTeg3Gt>V6*=#-*l>zt=O z{Td#D?(RuNNGF7OLXUphy>vxY)iix|6!(1k4%nWYE}+hWtY+>Gy(Dr$x&}NXmC|ZZ zcIneISl9gk0vD)-aQXz8-IM*LfipCSpMs(HsXVI?E1MmFLu1ls0or=G&*U!dJ?WwGX!c!^SoXy&PB64Tn6E8;sm zt4*hlQz_d0U8$?}kQq~2b*EbIC#2VTeSP;>qpob^(!g5fkX~uh*Zf5+QugTb z->7+4T)i!k+E6nqrmZO?_ciKfn7;lifdyvNhQA>LfrKZOEdL8Opin&fxGb?XRy?4cox-LXBU|oRqovd#{&%9!3dP|~? zUP2-lu|(s*#5JaQIx~~;SGChk;CVD8LzRXxz&&$UU0;Ih@K}{mtCq4`LD5->#$@iU zGLE!oZiyfeJP;^Dcxf=xlQ5Q;Dx>*@XDD&Oz+#*b7TNvl*!^PLTlLRBkL#kM z@)nOwN=28?Ol-u;^9Q=d+>3aSZ>J8*OI8_W(M0{h`&pUA8yLp!Ah(gqx&LH!FIX39 zF3W{4?11L;Yep{0g~}^0%^B7#B<*xdmuHi9YG6OV_w=N?t_91~bsp9qX8j)YHN{j^ z&bv5yt`Hs|@&`a=K0JD11Mbm;$Bcql+(LU}6YW3LNPBxd?dxjM_Z~3@7%JY!(1)B1 z71$VB$1${NBhax=6dV9j++?DYVeP~o;4!yu!cXTTb4#i^U2q&*(hv<9r_6~?%%%&P z&=+Y*YPz6>aq&LUohL`mV#zr5Gdc1mhN@8q2PU2ZpKRnSeRKHb5`n7QiEbQNS_4Nq`oxco!jW0cHU|2BZLA1;oIkZ4l!g zKpUVIa5vxy!1Zn3a5Y-NZQDp&)a3Q~gm~N}MNNKTAm|fF^A3|+6r-Z)p`a94CPL9e zVo(xVypj(krbCcS_jw@M6O`iM`C=9`Hz?AdO)KLnfodTniztiG6rriZ#*Ff>bu_Pz zB2`eVR~ky_4I6z`DdS8QFVFq>G^KP7xDl{SpSe!%UVP3{xn=&@9R91f62q?mu?i}Y zX=OC-CPJ2SXvaZ20@{fj+EJWcBWQy;wAJ|Si_3AtmiK>>Zw(%r3p?eA6buVh{!oZq z%I7^pd|NakbV#D?LzaAnc!rQYd@P^+a^5Z9`p$@DHx3q(v=Sr&5@v#SzyE67?J|fh{eISK>9Vj5b@zp zD10m$j7Wk=9?Rpy-VlCD^FAc*ytY>qVDsRzoS%=#*!uwu?-#CFr_JMoumcrgQgC(5 z3&g15z2SHtFAN5;&o!9&`{lUA_xgha^p_aVH^gFld@<=G!4TcS5m0;~!5iVFp_l-z zy-_~m4GVD$!H;-Dxb^wG9Kj|J!f&2OG!aFrejtx$)Z6p@x;+2G~I3ZtruMV3FvZcLO>; zXGs%yd+G^!6iGCnSwL#N@wgD~2@RPB!=XsLu0j?g_r`qzA?%HB3I}~+G#>4hHld#1 z>y3x22Fw*ERMudx5SO|HF^<=;uEJc!Rct9tc(jj8J~PZ zOpghzRumqTVMXwJ#NYr*Zl4feVdk>kgIG$R zS7%*CuQwDIDz?;CujsyZ@rwQ&iT7Bqt-fZjwbd(5XJX(NVnW1^=YQE37Mbd6$hFnW zVc+7}+KB&+&29JX*^?dIXimQhH{#rG*YYABnTaH=2U^!{|xg~A6XnEJN-nz+Zu{x|otV7mO>*uZSSnsg) z+CFU?w>@k7rtKBmFKutxuGmWL<@Wt{pZ%~sX>Z!xx|!d6X!9pGe{M5zta9ibw>a){ zR6FV%_dA|;JnNWryydv)P#uNN66adyhn@F1cRKet_dEU0e&@%Wk2{Y#KkGc^{DSit z=hvJko!@g#IbU_Y?tH`fYv(!VJI=p4SGm@>Zg#D8Rl2HOHLiM>$F<9~*X4CR literal 0 HcmV?d00001 diff --git a/tools/platforms/msp430/pybsl/cp210xrt/setup.py b/tools/platforms/msp430/pybsl/cp210xrt/setup.py new file mode 100644 index 00000000..e92b8712 --- /dev/null +++ b/tools/platforms/msp430/pybsl/cp210xrt/setup.py @@ -0,0 +1,22 @@ +# This is an example of a distutils 'setup' script for the example_nt +# sample. This provides a simpler way of building your extension +# and means you can avoid keeping MSVC solution files etc in source-control. +# It also means it should magically build with all compilers supported by +# python. + +# USAGE: you probably want 'setup.py install' - but execute 'setup.py --help' +# for all the details. + +# NOTE: This is *not* a sample for distutils - it is just the smallest +# script that can build this. See distutils docs for more info. + +from distutils.core import setup, Extension + +cp210xrt_mod = Extension('cp210xrt', sources = ['cp210xrt.cpp'], \ + include_dirs = ['.'], library_dirs = ['.'], libraries = ['CP210xRuntime']) + +setup(name = "cp210xrt", + version = "0.1", + description = "CP210x runtime access", + ext_modules = [cp210xrt_mod], +) diff --git a/tools/platforms/msp430/pybsl/cp210xrt/test/reset.py b/tools/platforms/msp430/pybsl/cp210xrt/test/reset.py new file mode 100644 index 00000000..06bac3ed --- /dev/null +++ b/tools/platforms/msp430/pybsl/cp210xrt/test/reset.py @@ -0,0 +1,21 @@ +#!/usr/bin/python + +import sys, time, serial, cp210xrt; + +if sys.platform != 'win32': + print 'Sorry, the cp210xrt module only works for Win32 platforms' + sys.exit(1) +elif sys.argc != 2: + print 'usage: %s ' % sys.argv[0] + sys.exit(1) +else: + comport = sys.argvp[1] + print 'Opening %r\n' % comport + serialport = serial.Serial(comport, 9600) + print 'Clear bit...\n' + cp210xrt.writeLatch(serialport.fd, 0x04, 0x0) + time.sleep(0.250) + print 'Set bit...\n' + cp210xrt.writeLatch(serialport.fd, 0x04, 0x04) + print 'Device should now be reset' + diff --git a/tools/platforms/msp430/pybsl/tos-bsl.in b/tools/platforms/msp430/pybsl/tos-bsl.in old mode 100644 new mode 100755 index 4cd94d86..6809e3b6 --- a/tools/platforms/msp430/pybsl/tos-bsl.in +++ b/tools/platforms/msp430/pybsl/tos-bsl.in @@ -116,7 +116,7 @@ # from bsl_standard or one of its specializations. # -import sys, fcntl, time, string, cStringIO, struct +import sys, time, string, cStringIO, struct sys.path.append("@tinyoslibdir@") import serial @@ -1423,6 +1423,12 @@ class bsl_cp2103(bsl_standard): bsl_standard.bslInit(self) +if sys.platform == 'win32': + sys.path.append('.') + import cp210xrt +else: + import fcntl + GPIOBIC = 0x89f2 GPIOBIS = 0x89f3 GPIO_2 = 0x04 @@ -1439,7 +1445,7 @@ class cp2103_posix: def setGpio2(self, assertme): """ set not assertme to the gpio pin """ - if not self.fd: raise "connection not open" + if not self.fd: raise BSLException("connection not open") if assertme: fcntl.ioctl(self.fd, GPIOBIC, GPIO_2) else: @@ -1448,7 +1454,7 @@ class cp2103_posix: def setGpio3(self, assertme): """ set not assertme to the gpio pin """ - if not self.fd: raise "connection not open" + if not self.fd: raise BSLException("connection not open") if assertme: fcntl.ioctl(self.fd, GPIOBIC, GPIO_3) else: @@ -1456,42 +1462,36 @@ class cp2103_posix: time.sleep(0.010) # no sleep = too fast -class cp2103_cygwin: +class cp2103_win32: """ - Implements cp2103 gpio access for windows cygwin systems via the + Implements cp2103 gpio access for windows win32 systems via the cp210x VCP and the CP210xRuntime.dll. """ def __init__(self, serialport): - import cp210xrt - sys.stderr.write("cp2103_cygwin\n") - self.fd = serialport.fd + self.hComPort = serialport.hComPort def setGpio2(self, assertme): """ set not assertme to the gpio pin """ - import cp210xrt if assertme: - cp210xrt.writeLatch(self.fd, GPIO_2, 0) + cp210xrt.writeLatch(self.hComPort, GPIO_2, 0) else: - cp210xrt.writeLatch(self.fd, GPIO_2, GPIO_2) + cp210xrt.writeLatch(self.hComPort, GPIO_2, GPIO_2) def setGpio3(self, assertme): """ set not assertme to the gpio pin """ - import cp210xrt if assertme: - cp210xrt.writeLatch(self.fd, GPIO_3, 0) + cp210xrt.writeLatch(self.hComPort, GPIO_3, 0) else: - cp210xrt.writeLatch(self.fd, GPIO_3, GPIO_3) + cp210xrt.writeLatch(self.hComPort, GPIO_3, GPIO_3) def cp2103_factory(serialport): - import os; - if os.name == 'posix': - if sys.platform == 'cygwin': - return cp2103_cygwin(serialport) - else: - return cp2103_posix(serialport) + if sys.platform == 'win32': + return cp2103_win32(serialport) + elif sys.platform != 'cygwin': + return cp2103_posix(serialport) else: - raise "No cp2103 support is available for your platform." + raise BSLException("No cp2103 support is available for your platform.") def getClass(classname, modulename="__main__"): -- 2.39.2