📄 tinilnk.c
字号:
#define DEBUG_OW_COM 0#if DEBUG_OW_COM#include <stdio.h>#endif//---------------------------------------------------------------------------// Copyright (C) 2000 Dallas Semiconductor Corporation, All Rights Reserved.// // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions:// // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software.// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // IN NO EVENT SHALL DALLAS SEMICONDUCTOR BE LIABLE FOR ANY CLAIM, DAMAGES // OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, // ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE.// // Except as contained in this notice, the name of Dallas Semiconductor // shall not be used except as stated in the Dallas Semiconductor // Branding Policy. //---------------------------------------------------------------------------//// TODO.C - COM functions required by MLANLL.C, MLANTRNU, MLANNETU.C and// MLanFile.C for MLANU to communicate with the DS2480 based // Universal Serial Adapter 'U'. Fill in the platform specific code.//// Version: 1.02//// History: 1.00 -> 1.01 Added function msDelay. //// 1.01 -> 1.02 Changed to generic OpenCOM/CloseCOM for easier // use with other platforms.////--------------------------------------------------------------------------// Copyright (C) 1998 Andrea Chambers and University of Newcastle upon Tyne,// All Rights Reserved.//--------------------------------------------------------------------------//// Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the "Software"), // to deal in the Software without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following conditions:// // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software.// // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. // IN NO EVENT SHALL THE UNIVERSITY OF NEWCASTLE UPON TYNE OR ANDREA CHAMBERS// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.//---------------------------------------------------------------------------//// LinuxLNK.C - COM functions required by MLANLLU.C, MLANTRNU.C, MLANNETU.C // and MLanFile.C for MLANU to communicate with the DS2480 based// Universal Serial Adapter 'U'. Platform specific code.//// Version: 1.03// History: 1.00 -> 1.03 modifications by David Smiczek// Changed to use generic OpenCOM/CloseCOM // Pass port name to OpenCOM instead of hard coded// Changed msDelay to handle long delays // Reformatted to look like 'TODO.C' // Added #include "ds2480.h" to use constants.// Added function SetBaudCOM() // Added function msGettick()// Removed delay from WriteCOM(), used tcdrain()// Added wait for byte available with timeout using// select() in ReadCOM()//// 1.03 -> 2.00 Support for multiple ports. Include "ownet.h". Use// 'uchar'. Reorder functions. Provide correct // return values to OpenCOM. Replace 'makeraw' call.// Should now be POSIX. //#include <stdio.h>#include "ownet.h"#include "ds2480.h"//---------------------------------------------------------------------------// Attempt to open a com port. // Set the starting baud rate to 9600.//// 'portnum' - number 0 to MAX_PORTNUM-1. This number provided will // be used to indicate the port number desired when calling// all other functions in this library.//// 'port_zstr' - zero terminate port name. For this platform// ignored for now////// Returns: TRUE(1) - success, COM port opened// FALSE(0) - failure, could not open specified port//int OpenCOM(int portnum, char *port_zstr){ unsigned long baud=9600; //printf ("OpenCOM(%d,\"%s\")\n", portnum, port_zstr); // hush the compiler portnum; port_zstr; Serial1Init(baud,1); return TRUE; // changed (2.00), used to return fd;}//---------------------------------------------------------------------------// Closes the connection to the port.//// 'portnum' - number 0 to MAX_PORTNUM-1. This number was provided to// OpenCOM to indicate the port number.//void CloseCOM(int portnum){ //printf ("CloseCOM(%d)\n", portnum); // hush the compiler portnum;}//--------------------------------------------------------------------------// Write an array of bytes to the COM port, verify that it was// sent out. Assume that baud rate has been set.//// 'portnum' - number 0 to MAX_PORTNUM-1. This number provided will // be used to indicate the port number desired when calling// all other functions in this library.// Returns 1 for success and 0 for failure// int WriteCOM(int portnum, int outlen, uchar *outbuf){ int i;#if DEBUG_OW_COM printf ("WriteCOM(%d, %d,...): ", portnum, outlen, outbuf);#endif // hush the compiler portnum; for (i=0; i<outlen; i++) {#if DEBUG_OW_COM printf ("%02x ", outbuf[i]);#endif Serial1PutChar(outbuf[i]); }#if DEBUG_OW_COM printf ("\n");#endif return TRUE;} //--------------------------------------------------------------------------// Read an array of bytes to the COM port, verify that it was// sent out. Assume that baud rate has been set.//// 'portnum' - number 0 to MAX_PORTNUM-1. This number was provided to// OpenCOM to indicate the port number.// 'outlen' - number of bytes to write to COM port// 'outbuf' - pointer ot an array of bytes to write//// Returns: TRUE(1) - success // FALSE(0) - failure//int ReadCOM(int portnum, int inlen, uchar *inbuf){ int i;#if DEBUG_OW_COM printf ("ReadCOM(%d,%d,...): ", portnum, inlen);#endif // hush the compiler portnum; for (i=0; i<inlen; i++) { inbuf[i]=Serial1GetChar();#if DEBUG_OW_COM printf ("%02x ", inbuf[i]&0xff);#endif }#if DEBUG_OW_COM printf ("\n");#endif // success, so return desired length return i;}//---------------------------------------------------------------------------// Description:// flush the rx and tx buffers//// 'portnum' - number 0 to MAX_PORTNUM-1. This number was provided to// OpenCOM to indicate the port number.//void FlushCOM(int portnum) { //printf ("FlushCOM(%d): ", portnum); // hush the compiler portnum; Serial1Flush();} //--------------------------------------------------------------------------// Description:// Send a break on the com port for at least 2 ms// // 'portnum' - number 0 to MAX_PORTNUM-1. This number was provided to// OpenCOM to indicate the port number.//void BreakCOM(int portnum) { //printf ("BreakCOM(%d)\n", portnum); // hush the compiler portnum; Serial1SendBreak();}//--------------------------------------------------------------------------// Set the baud rate on the com port. //// 'portnum' - number 0 to MAX_PORTNUM-1. This number was provided to// OpenCOM to indicate the port number.// 'new_baud' - new baud rate defined as// PARMSET_9600 0x00// PARMSET_19200 0x02// PARMSET_57600 0x04// PARMSET_115200 0x06// void SetBaudCOM(int portnum, int new_baud){ unsigned long baud; portnum; // hush the compiler switch (new_baud) { case PARMSET_9600: baud=9600; break; case PARMSET_19200: baud=19200; break; case PARMSET_57600: baud=57600; break; case PARMSET_115200: baud=115200; break; default: return; } Serial1Baud(baud);}//--------------------------------------------------------------------------// Get the current millisecond tick count. Does not have to represent// an actual time, it just needs to be an incrementing timer.//long msGettick(void){ return ClockTicks();}//--------------------------------------------------------------------------// Description:// Delay for at least 'len' ms// void msDelay(int len){ ClockMilliSecondsDelay(len);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -