| /* |
| * Copyright (c) 2011-2012 Qualcomm Atheros Inc. |
| * |
| * Permission to use, copy, modify, and/or distribute this software for any |
| * purpose with or without fee is hereby granted, provided that the above |
| * copyright notice and this permission notice appear in all copies. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
| * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| */ |
| |
| #include "libtcmd.h" |
| #include "os.h" |
| |
| int tcmd_set_timer(struct tcmd_cfg *cfg) |
| { |
| struct itimerspec exp_time; |
| int err; |
| |
| A_DBG("setting timer\n"); |
| bzero(&exp_time, sizeof(exp_time)); |
| exp_time.it_value.tv_sec = TCMD_TIMEOUT; |
| err = timer_settime(cfg->timer, 0, &exp_time, NULL); |
| cfg->timeout = false; |
| if (err < 0) |
| return errno; |
| return 0; |
| } |
| |
| int tcmd_reset_timer(struct tcmd_cfg *cfg) |
| { |
| struct itimerspec curr_time; |
| int err; |
| |
| err = timer_gettime(cfg->timer, &curr_time); |
| if (err < 0) |
| return errno; |
| |
| if (!curr_time.it_value.tv_sec && !curr_time.it_value.tv_nsec) |
| return -ETIMEDOUT; |
| |
| A_DBG("resetting timer\n"); |
| bzero(&curr_time, sizeof(curr_time)); |
| err = timer_settime(cfg->timer, 0, &curr_time, NULL); |
| if (err < 0) |
| return errno; |
| return 0; |
| } |