19171fb8572040f83bab5b951f469e27719b22aaeYifan Hong#ifndef ANDROID_HIDL_TEST_FOO_HELPER_H 29171fb8572040f83bab5b951f469e27719b22aaeYifan Hong#define ANDROID_HIDL_TEST_FOO_HELPER_H 39171fb8572040f83bab5b951f469e27719b22aaeYifan Hong#include <string> 49171fb8572040f83bab5b951f469e27719b22aaeYifan Hong#include <android/hardware/tests/foo/1.0/IFoo.h> 59171fb8572040f83bab5b951f469e27719b22aaeYifan Hong#include <utils/Timers.h> 69171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 79171fb8572040f83bab5b951f469e27719b22aaeYifan Hongnamespace android { 89171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 99171fb8572040f83bab5b951f469e27719b22aaeYifan Hongusing std::to_string; 109171fb8572040f83bab5b951f469e27719b22aaeYifan Hongusing hardware::hidl_string; 119171fb8572040f83bab5b951f469e27719b22aaeYifan Hongusing hardware::hidl_vec; 129171fb8572040f83bab5b951f469e27719b22aaeYifan Hongusing hardware::hidl_array; 139171fb8572040f83bab5b951f469e27719b22aaeYifan Hongusing hardware::tests::foo::V1_0::IFoo; 149171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 159171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstatic constexpr nsecs_t DELAY_S = 1; 169171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstatic constexpr nsecs_t DELAY_NS = seconds_to_nanoseconds(DELAY_S); 179171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstatic constexpr nsecs_t TOLERANCE_NS = milliseconds_to_nanoseconds(10); 189171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstatic constexpr nsecs_t ONEWAY_TOLERANCE_NS = milliseconds_to_nanoseconds(1); 199171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 209171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstd::string to_string(const IFoo::StringMatrix5x3 &M); 219171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstd::string to_string(const IFoo::StringMatrix3x5 &M); 229171fb8572040f83bab5b951f469e27719b22aaeYifan Hong// Add quotes around s. For testing purposes only. 239171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstd::string to_string(const hidl_string &s); 249171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 259171fb8572040f83bab5b951f469e27719b22aaeYifan Hongtemplate<typename T> 269171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstd::string to_string(const T *elems, size_t n) { 279171fb8572040f83bab5b951f469e27719b22aaeYifan Hong std::string out; 289171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out = "["; 299171fb8572040f83bab5b951f469e27719b22aaeYifan Hong for (size_t i = 0; i < n; ++i) { 309171fb8572040f83bab5b951f469e27719b22aaeYifan Hong if (i > 0) { 319171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out += ", "; 329171fb8572040f83bab5b951f469e27719b22aaeYifan Hong } 339171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out += to_string(elems[i]); 349171fb8572040f83bab5b951f469e27719b22aaeYifan Hong } 359171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out += "]"; 369171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 379171fb8572040f83bab5b951f469e27719b22aaeYifan Hong return out; 389171fb8572040f83bab5b951f469e27719b22aaeYifan Hong} 399171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 409171fb8572040f83bab5b951f469e27719b22aaeYifan Hongtemplate<typename T, size_t SIZE> 419171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstd::string to_string(const hidl_array<T, SIZE> &array) { 429171fb8572040f83bab5b951f469e27719b22aaeYifan Hong return to_string(&array[0], SIZE); 439171fb8572040f83bab5b951f469e27719b22aaeYifan Hong} 449171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 459171fb8572040f83bab5b951f469e27719b22aaeYifan Hongtemplate<typename T, size_t SIZE1, size_t SIZE2> 469171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstd::string to_string(const hidl_array<T, SIZE1, SIZE2> &array) { 479171fb8572040f83bab5b951f469e27719b22aaeYifan Hong std::string out; 489171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out = "["; 499171fb8572040f83bab5b951f469e27719b22aaeYifan Hong for (size_t i = 0; i < SIZE1; ++i) { 509171fb8572040f83bab5b951f469e27719b22aaeYifan Hong if (i > 0) { 519171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out += ", "; 529171fb8572040f83bab5b951f469e27719b22aaeYifan Hong } 539171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 549171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out += "["; 559171fb8572040f83bab5b951f469e27719b22aaeYifan Hong for (size_t j = 0; j < SIZE2; ++j) { 569171fb8572040f83bab5b951f469e27719b22aaeYifan Hong if (j > 0) { 579171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out += ", "; 589171fb8572040f83bab5b951f469e27719b22aaeYifan Hong } 599171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 609171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out += to_string(array[i][j]); 619171fb8572040f83bab5b951f469e27719b22aaeYifan Hong } 629171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out += "]"; 639171fb8572040f83bab5b951f469e27719b22aaeYifan Hong } 649171fb8572040f83bab5b951f469e27719b22aaeYifan Hong out += "]"; 659171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 669171fb8572040f83bab5b951f469e27719b22aaeYifan Hong return out; 679171fb8572040f83bab5b951f469e27719b22aaeYifan Hong} 689171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 699171fb8572040f83bab5b951f469e27719b22aaeYifan Hongtemplate<typename T> 709171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstd::string to_string(const hidl_vec<T> &vec) { 719171fb8572040f83bab5b951f469e27719b22aaeYifan Hong return to_string(&vec[0], vec.size()); 729171fb8572040f83bab5b951f469e27719b22aaeYifan Hong} 739171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 749171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstd::string QuuxToString(const IFoo::Quux &val); 759171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 769171fb8572040f83bab5b951f469e27719b22aaeYifan Hongstd::string MultiDimensionalToString(const IFoo::MultiDimensional &val); 779171fb8572040f83bab5b951f469e27719b22aaeYifan Hong 789171fb8572040f83bab5b951f469e27719b22aaeYifan Hong} // namespace android 799171fb8572040f83bab5b951f469e27719b22aaeYifan Hong#endif // ANDROID_HIDL_TEST_TEST_HELPER_H 80