Mercurial > louis > mq > lightsd
changeset 164:e2fb5e8f867f
wip, endianess is hard
author | Louis Opter <kalessin@kalessin.fr> |
---|---|
date | Fri, 03 Jul 2015 12:46:45 +0800 |
parents | 51ed5fc06d1a |
children | a22f5060e38f |
files | fix_bit_shift_in_insert_mock_bulb.patch |
diffstat | 1 files changed, 86 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/fix_bit_shift_in_insert_mock_bulb.patch Fri Jun 19 12:20:05 2015 +0800 +++ b/fix_bit_shift_in_insert_mock_bulb.patch Fri Jul 03 12:46:45 2015 +0800 @@ -3,17 +3,101 @@ # Parent a6582c808671b87b60a9c3ef06e8059b07515ca3 Fix bitshift in test_utils_insert_mock_bulb... +diff --git a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -22,8 +22,11 @@ + # TODO: we need at least 2.0.19-stable because of the logging defines + FIND_PACKAGE(Event2 REQUIRED COMPONENTS core) + FIND_PACKAGE(Endian REQUIRED) ++INCLUDE(TestBigEndian) + INCLUDE(CompatTimeMonotonic) + ++TEST_BIG_ENDIAN(LGTD_BIG_ENDIAN_SYSTEM) ++ + ### Global definitions ######################################################### + + INCLUDE(AddAllSubdirectories) +@@ -32,6 +35,7 @@ + SET(CMAKE_C_FLAGS "-pipe -Wextra -Wall -Wstrict-prototypes -std=c99") + + ADD_DEFINITIONS("-DLGTD_SIZEOF_VOID_P=${CMAKE_SIZEOF_VOID_P}") ++ADD_DEFINITIONS("-DLGTD_BIG_ENDIAN_SYSTEM=${LGTD_BIG_ENDIAN_SYSTEM}") + + # Only relevant for the GNU libc: + ADD_DEFINITIONS( +diff --git a/CMakeScripts/CompatTimeMonotonic.cmake b/CMakeScripts/CompatTimeMonotonic.cmake +--- a/CMakeScripts/CompatTimeMonotonic.cmake ++++ b/CMakeScripts/CompatTimeMonotonic.cmake +@@ -24,8 +24,16 @@ + TIME_MONOTONIC_LIBRARY time_monotonic + CACHE INTERNAL "lgtd_time_monotonic (POSIX generic implementation)" + ) +- ADD_LIBRARY(${TIME_MONOTONIC_LIBRARY} STATIC "${GENERIC_TIME_MONOTONIC_IMPL}") +- TARGET_LINK_LIBRARIES(${TIME_MONOTONIC_LIBRARY} ${CLOCK_GETTIME_LIBRARY}) ++ SET( ++ TIME_MONOTONIC_IMPL time_monotonic ++ CACHE INTERNAL "lgtd_time_monotonic (POSIX generic source)" ++ ) ++ IF (CLOCK_GETTIME_LIBRARY) ++ SET( ++ TIME_MONOTONIC_LIBRARY_DEP ++ CACHE INTERNAL ${CLOCK_GETTIME_LIBRARY} "dependency for lgtd_time_monotonic" ++ ) ++ ENDIF () + ELSEIF (EXISTS "${COMPAT_TIME_MONOTONIC_IMPL}") + MESSAGE(STATUS "Looking for clock_gettime - not found, using built-in compatibilty file") + FILE(COPY "${COMPAT_TIME_MONOTONIC_H}" DESTINATION "${LIGHTSD_BINARY_DIR}/core/") +@@ -33,8 +41,17 @@ + TIME_MONOTONIC_LIBRARY time_monotonic + CACHE INTERNAL "lgtd_time_monotonic (${CMAKE_SYSTEM_NAME} specific implementation)" + ) +- ADD_LIBRARY(${TIME_MONOTONIC_LIBRARY} STATIC "${COMPAT_TIME_MONOTONIC_IMPL}") ++ SET( ++ TIME_MONOTONIC_IMPL "${COMPAT_TIME_MONOTONIC_IMPL}" ++ CACHE INTERNAL "lgtd_time_monotonic (${CMAKE_SYSTEM_NAME} specific source)" ++ ) + ELSE () + MESSAGE(SEND_ERROR "Looking for clock_gettime - not found") + ENDIF () + ENDIF () ++ ++ADD_LIBRARY(${TIME_MONOTONIC_LIBRARY} STATIC "${TIME_MONOTONIC_IMPL}") ++ ++IF (TIME_MONOTONIC_LIBRARY_DEP) ++ TARGET_LINK_LIBRARIES(${TIME_MONOTONIC_LIBRARY} ${TIME_MONOTONIC_LIBRARY_DEP}) ++ENDIF () diff --git a/tests/core/tests_utils.c b/tests/core/tests_utils.c --- a/tests/core/tests_utils.c +++ b/tests/core/tests_utils.c -@@ -50,7 +50,9 @@ +@@ -50,9 +50,29 @@ union { uint8_t as_array[LGTD_LIFX_ADDR_LENGTH]; uint64_t as_scalar; - } bulb_addr = { .as_scalar = htobe64(addr) >> 16 }; + } bulb_addr = { -+ .as_scalar = addr << 8 * (LGTD_LIFX_ADDR_LENGTH - 1) ++#if LGTD_BIG_ENDIAN_SYSTEM ++ .as_scalar = htobe64(addr) << 8 * (sizeof(addr) - 1) ++#else ++ .as_scalar = htobe64(addr) >> 16 ++#endif + }; struct lgtd_lifx_bulb *bulb = lgtd_lifx_bulb_open(gw, bulb_addr.as_array); ++#if 0 ++ for (int i = 0; i != 8; i++) { ++ bulb_addr.as_scalar = addr << 8 * i; ++ printf("==== i := %d ====\n", i); ++ for (int j = 0; j != LGTD_LIFX_ADDR_LENGTH; j++) { ++ printf("bulb_addr.as_array[%d] = %hhu\n", j, bulb_addr.as_array[j]); ++ } ++ } ++#else ++ for (int j = 0; j != LGTD_LIFX_ADDR_LENGTH; j++) { ++ printf("bulb_addr.as_array[%d] = %hhu\n", j, bulb_addr.as_array[j]); ++ } ++#endif ++ SLIST_INSERT_HEAD(&gw->bulbs, bulb, link_by_gw); + + return bulb;