Nico Bollen / LIN

Dependents:   MBED_LIN_RGB_Master_Example

Committer:
bollenn
Date:
Tue May 06 19:56:48 2014 +0000
Revision:
0:c91a9ebab739
Child:
1:58b5d1e8fae3
First commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bollenn 0:c91a9ebab739 1 /**
bollenn 0:c91a9ebab739 2 * Master device LIN communication library for mbed
bollenn 0:c91a9ebab739 3 *
bollenn 0:c91a9ebab739 4 * Copyright (C) 2014 TASS Belgium NV
bollenn 0:c91a9ebab739 5 *
bollenn 0:c91a9ebab739 6 * Released under GPL v2
bollenn 0:c91a9ebab739 7 *
bollenn 0:c91a9ebab739 8 * Other licensing models might apply at the sole discretion of the copyright holders.
bollenn 0:c91a9ebab739 9 *
bollenn 0:c91a9ebab739 10 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
bollenn 0:c91a9ebab739 11 * and associated documentation files (the "Software"), to deal in the Software without restriction,
bollenn 0:c91a9ebab739 12 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
bollenn 0:c91a9ebab739 13 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
bollenn 0:c91a9ebab739 14 * furnished to do so, subject to the following conditions:
bollenn 0:c91a9ebab739 15 *
bollenn 0:c91a9ebab739 16 * The above copyright notice and this permission notice shall be included in all copies or
bollenn 0:c91a9ebab739 17 * substantial portions of the Software.
bollenn 0:c91a9ebab739 18 *
bollenn 0:c91a9ebab739 19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
bollenn 0:c91a9ebab739 20 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
bollenn 0:c91a9ebab739 21 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
bollenn 0:c91a9ebab739 22 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
bollenn 0:c91a9ebab739 23 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
bollenn 0:c91a9ebab739 24 */
bollenn 0:c91a9ebab739 25
bollenn 0:c91a9ebab739 26 #include "LinMaster.h"
bollenn 0:c91a9ebab739 27
bollenn 0:c91a9ebab739 28 LinMaster::LinMaster(PinName Pin)
bollenn 0:c91a9ebab739 29 {
bollenn 0:c91a9ebab739 30 MyPin = Pin;
bollenn 0:c91a9ebab739 31 u8BreakLen = 20;
bollenn 0:c91a9ebab739 32 u8DelimLen = 4;
bollenn 0:c91a9ebab739 33 (void)Baudrate(9600);
bollenn 0:c91a9ebab739 34 }
bollenn 0:c91a9ebab739 35
bollenn 0:c91a9ebab739 36 LinMaster::~LinMaster()
bollenn 0:c91a9ebab739 37 {
bollenn 0:c91a9ebab739 38
bollenn 0:c91a9ebab739 39 }
bollenn 0:c91a9ebab739 40
bollenn 0:c91a9ebab739 41 bool LinMaster::Init(void)
bollenn 0:c91a9ebab739 42 {
bollenn 0:c91a9ebab739 43 DigitalInOut LinPin(MyPin);
bollenn 0:c91a9ebab739 44 LinPin.output();
bollenn 0:c91a9ebab739 45 LinPin.write(1);
bollenn 0:c91a9ebab739 46
bollenn 0:c91a9ebab739 47 return ( true );
bollenn 0:c91a9ebab739 48 }
bollenn 0:c91a9ebab739 49
bollenn 0:c91a9ebab739 50 bool LinMaster::Baudrate(uint16_t uBaud)
bollenn 0:c91a9ebab739 51 {
bollenn 0:c91a9ebab739 52 bool blReturn = false;
bollenn 0:c91a9ebab739 53
bollenn 0:c91a9ebab739 54 if ((uBaud > 0) && (uBaud <= 20000))
bollenn 0:c91a9ebab739 55 {
bollenn 0:c91a9ebab739 56 u16BitPeriod = 1000000/uBaud;
bollenn 0:c91a9ebab739 57 blReturn = true;
bollenn 0:c91a9ebab739 58 }
bollenn 0:c91a9ebab739 59
bollenn 0:c91a9ebab739 60 return ( blReturn );
bollenn 0:c91a9ebab739 61 }
bollenn 0:c91a9ebab739 62
bollenn 0:c91a9ebab739 63 uint16_t LinMaster::Baudrate(void)
bollenn 0:c91a9ebab739 64 {
bollenn 0:c91a9ebab739 65 return ( 1000000/u16BitPeriod );
bollenn 0:c91a9ebab739 66 }
bollenn 0:c91a9ebab739 67
bollenn 0:c91a9ebab739 68 bool LinMaster::SendFrame(bool blDir, uint8_t u8ID, uint8_t* ptrData, uint8_t u8Len)
bollenn 0:c91a9ebab739 69 {
bollenn 0:c91a9ebab739 70 DigitalInOut LinPin(MyPin);
bollenn 0:c91a9ebab739 71 LinPin.output();
bollenn 0:c91a9ebab739 72 LinPin.write(1);
bollenn 0:c91a9ebab739 73
bollenn 0:c91a9ebab739 74 wait_us(u16BitPeriod);
bollenn 0:c91a9ebab739 75
bollenn 0:c91a9ebab739 76 return ( true );
bollenn 0:c91a9ebab739 77 }
bollenn 0:c91a9ebab739 78
bollenn 0:c91a9ebab739 79 /* EOF */