diff options
Diffstat (limited to 'otherservice/posix_based_os001_legacy_library/library/src')
6 files changed, 280 insertions, 0 deletions
diff --git a/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001ClockCycleApi.c b/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001ClockCycleApi.c new file mode 100644 index 00000000..b4e73c57 --- /dev/null +++ b/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001ClockCycleApi.c @@ -0,0 +1,56 @@ +/* + * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <other_service/PosixBasedOS001ClockCycleApi.h> +#include <time.h> + +/******************************************************************************/ +/* +Overview :GetTickCount() like Win32 API +Arguments :void +Return :OK:usec NG:0 +Note : +*/ +static uint64_t GetTickCount(void ) +{ + struct timespec tp; + /*--------------------------------------------------------------------*/ + + if(clock_gettime(CLOCK_MONOTONIC, &tp) != 0) // LCOV_EXCL_BR_LINE 5: fail safe for libc clock_gettime + { + return 0; + } + + return (uint64_t)(tp.tv_sec * 1000000 + tp.tv_nsec / 1000); +} + + +/******************************************************************************/ +/* +Overview :Get the number of clock cycles +Arguments :void +Return :OK:usec NG:0 +Note : +*/ +uint64_t ClockCycle( void ) +{ + return GetTickCount(); +} + +/******************************************************************************/ +/* End of souce code.*/ +/******************************************************************************/ + diff --git a/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001TimeApi.c b/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001TimeApi.c new file mode 100644 index 00000000..2a1dd721 --- /dev/null +++ b/otherservice/posix_based_os001_legacy_library/library/src/PosixBasedOS001TimeApi.c @@ -0,0 +1,57 @@ +/* + * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// libraries for replacing PosixBasedOS001 to Linux +// PosixBasedOS001TimeApi.c + +#include <other_service/PosixBasedOS001TimeApi.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <unistd.h> // for using usleep() +#include <time.h> // for using clock() + +// delay() +// NOTE: Control a device +// duration +// The number of milliseconds for which to suspend the calling thread from execution. +// +// _CWORD72_ doesnot use return code of delay, and sets 1,100,and 1000. +unsigned int delay( unsigned int duration ){ + + int ret; + useconds_t duration_usec = duration * 1000; + + ret = EOK; + + if( duration_usec > 1000000 ){ + printf("delay():over flow!\n"); + }else{ + + // using usec order + ret = usleep(duration_usec); + + // error of usleep() = 0(E_OK), -1(ERROR) + // delay() cannot return error code. [data type unmatch] + if(ret < 0){ // LCOV_EXCL_BR_LINE 5: fail safe for libc function usleep + AGL_ASSERT_NOT_TESTED(); // LCOV_EXCL_LINE 200: test assert + printf("delay():error!\n"); // LCOV_EXCL_LINE 5: fail safe for libc function usleep + } + } + + return EOK; +} diff --git a/otherservice/posix_based_os001_legacy_library/library/src/itoa.c b/otherservice/posix_based_os001_legacy_library/library/src/itoa.c new file mode 100644 index 00000000..49a24bfc --- /dev/null +++ b/otherservice/posix_based_os001_legacy_library/library/src/itoa.c @@ -0,0 +1,45 @@ +/* + * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +char* itoa( int value, char buff[], int radix ) { + static const char table[] = "0123456789abcdefghijklmnopqrstuvwxyz"; + char *head = buff; + char *tail = buff; + char temp; + + // Converting minus sign to character + if ( value < 0 ){ + *tail++ = '-'; + value = -value; + } + // Converting integer to character + if ( value == 0 ){ + *tail++ = '0'; + } + else for ( head = tail ; value != 0 ; value /= radix ){ + *tail++ = table[ value % radix ]; + } + *tail = '\0'; + + // swapping characters + for ( tail-- ; head < tail ; head++, tail-- ){ + temp = *head; + *head = *tail; + *tail = temp; + } + + return buff; +} diff --git a/otherservice/posix_based_os001_legacy_library/library/src/strlcat.c b/otherservice/posix_based_os001_legacy_library/library/src/strlcat.c new file mode 100644 index 00000000..8d11eaba --- /dev/null +++ b/otherservice/posix_based_os001_legacy_library/library/src/strlcat.c @@ -0,0 +1,40 @@ +/* + * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <sys/types.h> +#include <string.h> + +size_t +strlcat(char *dst, const char *src, size_t size) +{ + size_t dstsize, srcsize, copysize; + + dstsize = strnlen(dst, size); + srcsize = strlen(src); + if (dstsize == size) { + return dstsize + srcsize; + } + + copysize = size - dstsize - 1; + if (srcsize < copysize) { + copysize = srcsize; + } + + memcpy(dst + dstsize, src, copysize); + dst[dstsize + copysize] = '\0'; + + return dstsize + srcsize; +} diff --git a/otherservice/posix_based_os001_legacy_library/library/src/strlcpy.c b/otherservice/posix_based_os001_legacy_library/library/src/strlcpy.c new file mode 100644 index 00000000..f440c0e3 --- /dev/null +++ b/otherservice/posix_based_os001_legacy_library/library/src/strlcpy.c @@ -0,0 +1,49 @@ +/* + * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <sys/types.h> +#include <string.h> + +/* + * Copy src to string dst of size siz. At most siz-1 characters + * will be copied. Always NUL terminates (unless siz == 0). + * Returns strlen(src); if retval >= siz, truncation occurred. + */ +size_t +strlcpy(char *dst, const char *src, size_t siz) +{ + char *d = dst; + const char *s = src; + size_t n = siz; + + /* Copy as many bytes as will fit */ + if (n != 0) { + while (--n != 0) { + if ((*d++ = *s++) == '\0') + break; + } + } + + /* Not enough room in dst, add NUL and traverse rest of src */ + if (n == 0) { + if (siz != 0) + *d = '\0'; /* NUL-terminate dst */ + while (*s++) + ; + } + + return (size_t)(s - src - 1); /* count does not include NUL */ +} diff --git a/otherservice/posix_based_os001_legacy_library/library/src/ultoa.c b/otherservice/posix_based_os001_legacy_library/library/src/ultoa.c new file mode 100644 index 00000000..1984246e --- /dev/null +++ b/otherservice/posix_based_os001_legacy_library/library/src/ultoa.c @@ -0,0 +1,33 @@ +/* + * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <string.h> + +char *ultoa(unsigned long value, char *buf, int radix) +{ + const static char c[] = "0123456789abcdef"; + char b[65]; + char *p = b + sizeof(b); + + *--p ='\0'; + do { + *--p = c[value % (unsigned int)radix]; + value /= (unsigned int)radix; + } while (value); + strcpy(buf, p); + + return buf; +} |