xref: /nrf52832-nimble/rt-thread/components/net/freemodbus/port/porttimer.c (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * FreeModbus Libary: RT-Thread Port
3*10465441SEvalZero  * Copyright (C) 2013 Armink <[email protected]>
4*10465441SEvalZero  *
5*10465441SEvalZero  * This library is free software; you can redistribute it and/or
6*10465441SEvalZero  * modify it under the terms of the GNU Lesser General Public
7*10465441SEvalZero  * License as published by the Free Software Foundation; either
8*10465441SEvalZero  * version 2.1 of the License, or (at your option) any later version.
9*10465441SEvalZero  *
10*10465441SEvalZero  * This library is distributed in the hope that it will be useful,
11*10465441SEvalZero  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12*10465441SEvalZero  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13*10465441SEvalZero  * Lesser General Public License for more details.
14*10465441SEvalZero  *
15*10465441SEvalZero  * You should have received a copy of the GNU Lesser General Public
16*10465441SEvalZero  * License along with this library; if not, write to the Free Software
17*10465441SEvalZero  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18*10465441SEvalZero  *
19*10465441SEvalZero  * File: $Id: porttimer.c,v 1.60 2013/08/13 15:07:05 Armink $
20*10465441SEvalZero  */
21*10465441SEvalZero 
22*10465441SEvalZero /* ----------------------- Platform includes --------------------------------*/
23*10465441SEvalZero #include "port.h"
24*10465441SEvalZero 
25*10465441SEvalZero /* ----------------------- Modbus includes ----------------------------------*/
26*10465441SEvalZero #include "mb.h"
27*10465441SEvalZero #include "mbport.h"
28*10465441SEvalZero 
29*10465441SEvalZero /* ----------------------- static functions ---------------------------------*/
30*10465441SEvalZero static struct rt_timer timer;
31*10465441SEvalZero static void prvvTIMERExpiredISR(void);
32*10465441SEvalZero static void timer_timeout_ind(void* parameter);
33*10465441SEvalZero 
34*10465441SEvalZero /* ----------------------- Start implementation -----------------------------*/
xMBPortTimersInit(USHORT usTim1Timerout50us)35*10465441SEvalZero BOOL xMBPortTimersInit(USHORT usTim1Timerout50us)
36*10465441SEvalZero {
37*10465441SEvalZero     rt_timer_init(&timer, "slave timer",
38*10465441SEvalZero                    timer_timeout_ind, /* bind timeout callback function */
39*10465441SEvalZero                    RT_NULL,
40*10465441SEvalZero                    (50 * usTim1Timerout50us) / (1000 * 1000 / RT_TICK_PER_SECOND) + 1,
41*10465441SEvalZero                    RT_TIMER_FLAG_ONE_SHOT); /* one shot */
42*10465441SEvalZero     return TRUE;
43*10465441SEvalZero }
44*10465441SEvalZero 
vMBPortTimersEnable()45*10465441SEvalZero void vMBPortTimersEnable()
46*10465441SEvalZero {
47*10465441SEvalZero     rt_timer_start(&timer);
48*10465441SEvalZero }
49*10465441SEvalZero 
vMBPortTimersDisable()50*10465441SEvalZero void vMBPortTimersDisable()
51*10465441SEvalZero {
52*10465441SEvalZero     rt_timer_stop(&timer);
53*10465441SEvalZero }
54*10465441SEvalZero 
prvvTIMERExpiredISR(void)55*10465441SEvalZero void prvvTIMERExpiredISR(void)
56*10465441SEvalZero {
57*10465441SEvalZero     (void) pxMBPortCBTimerExpired();
58*10465441SEvalZero }
59*10465441SEvalZero 
timer_timeout_ind(void * parameter)60*10465441SEvalZero static void timer_timeout_ind(void* parameter)
61*10465441SEvalZero {
62*10465441SEvalZero     prvvTIMERExpiredISR();
63*10465441SEvalZero }
64