1*042d53a7SEvalZero /* 2*042d53a7SEvalZero * Licensed to the Apache Software Foundation (ASF) under one 3*042d53a7SEvalZero * or more contributor license agreements. See the NOTICE file 4*042d53a7SEvalZero * distributed with this work for additional information 5*042d53a7SEvalZero * regarding copyright ownership. The ASF licenses this file 6*042d53a7SEvalZero * to you under the Apache License, Version 2.0 (the 7*042d53a7SEvalZero * "License"); you may not use this file except in compliance 8*042d53a7SEvalZero * with the License. You may obtain a copy of the License at 9*042d53a7SEvalZero * 10*042d53a7SEvalZero * http://www.apache.org/licenses/LICENSE-2.0 11*042d53a7SEvalZero * 12*042d53a7SEvalZero * Unless required by applicable law or agreed to in writing, 13*042d53a7SEvalZero * software distributed under the License is distributed on an 14*042d53a7SEvalZero * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15*042d53a7SEvalZero * KIND, either express or implied. See the License for the 16*042d53a7SEvalZero * specific language governing permissions and limitations 17*042d53a7SEvalZero * under the License. 18*042d53a7SEvalZero */ 19*042d53a7SEvalZero 20*042d53a7SEvalZero #include <assert.h> 21*042d53a7SEvalZero #include <stdint.h> 22*042d53a7SEvalZero #include <string.h> 23*042d53a7SEvalZero #include "os/os.h" 24*042d53a7SEvalZero #include "nimble/nimble_npl.h" 25*042d53a7SEvalZero 26*042d53a7SEvalZero #include <unistd.h> 27*042d53a7SEvalZero #include <time.h> 28*042d53a7SEvalZero 29*042d53a7SEvalZero /** 30*042d53a7SEvalZero * Return ticks [ms] since system start as uint32_t. 31*042d53a7SEvalZero */ 32*042d53a7SEvalZero ble_npl_time_t ble_npl_time_get(void)33*042d53a7SEvalZeroble_npl_time_get(void) 34*042d53a7SEvalZero { 35*042d53a7SEvalZero struct timespec now; 36*042d53a7SEvalZero if (clock_gettime(CLOCK_MONOTONIC, &now)) { 37*042d53a7SEvalZero return 0; 38*042d53a7SEvalZero } 39*042d53a7SEvalZero return now.tv_sec * 1000.0 + now.tv_nsec / 1000000.0; 40*042d53a7SEvalZero } 41*042d53a7SEvalZero 42*042d53a7SEvalZero ble_npl_time_ms_to_ticks(uint32_t ms,ble_npl_time_t * out_ticks)43*042d53a7SEvalZeroble_npl_error_t ble_npl_time_ms_to_ticks(uint32_t ms, ble_npl_time_t *out_ticks) 44*042d53a7SEvalZero { 45*042d53a7SEvalZero *out_ticks = ms; 46*042d53a7SEvalZero 47*042d53a7SEvalZero return BLE_NPL_OK; 48*042d53a7SEvalZero } 49*042d53a7SEvalZero 50*042d53a7SEvalZero ble_npl_time_ticks_to_ms(ble_npl_time_t ticks,uint32_t * out_ms)51*042d53a7SEvalZeroble_npl_error_t ble_npl_time_ticks_to_ms(ble_npl_time_t ticks, uint32_t *out_ms) 52*042d53a7SEvalZero { 53*042d53a7SEvalZero *out_ms = ticks; 54*042d53a7SEvalZero 55*042d53a7SEvalZero return BLE_NPL_OK; 56*042d53a7SEvalZero } 57*042d53a7SEvalZero ble_npl_time_ms_to_ticks32(uint32_t ms)58*042d53a7SEvalZeroble_npl_time_t ble_npl_time_ms_to_ticks32(uint32_t ms) 59*042d53a7SEvalZero { 60*042d53a7SEvalZero return ms; 61*042d53a7SEvalZero } 62*042d53a7SEvalZero ble_npl_time_ticks_to_ms32(ble_npl_time_t ticks)63*042d53a7SEvalZerouint32_t ble_npl_time_ticks_to_ms32(ble_npl_time_t ticks) 64*042d53a7SEvalZero { 65*042d53a7SEvalZero return ticks; 66*042d53a7SEvalZero } 67*042d53a7SEvalZero 68*042d53a7SEvalZero void ble_npl_time_delay(ble_npl_time_t ticks)69*042d53a7SEvalZeroble_npl_time_delay(ble_npl_time_t ticks) 70*042d53a7SEvalZero { 71*042d53a7SEvalZero sleep(ble_npl_time_ticks_to_ms32(ticks)/1000); 72*042d53a7SEvalZero } 73