@@ -2338,6 +2338,106 @@ ZTEST(devicetree_api, test_string_token)
23382338 }
23392339}
23402340
2341+ #undef DT_DRV_COMPAT
2342+ #define DT_DRV_COMPAT vnd_string_array_token
2343+ ZTEST (devicetree_api , test_string_idx_token )
2344+ {
2345+ enum token_string_idx {
2346+ /* Tokens */
2347+ token_first_idx_zero ,
2348+ token_first_idx_one ,
2349+ token_first_idx_two ,
2350+ token_second_idx_zero ,
2351+ token_second_idx_one ,
2352+ token_second_idx_two ,
2353+ token_second_idx_three ,
2354+ /* Upper tokens */
2355+ TOKEN_FIRST_IDX_ZERO ,
2356+ TOKEN_FIRST_IDX_ONE ,
2357+ TOKEN_FIRST_IDX_TWO ,
2358+ TOKEN_SECOND_IDX_ZERO ,
2359+ TOKEN_SECOND_IDX_ONE ,
2360+ TOKEN_SECOND_IDX_TWO ,
2361+ TOKEN_SECOND_IDX_THREE
2362+ };
2363+
2364+ /* Test direct idx access */
2365+ zassert_equal (DT_STRING_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_0 ), val , 0 ),
2366+ token_first_idx_zero , "" );
2367+ zassert_equal (DT_STRING_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_0 ), val , 1 ),
2368+ token_first_idx_one , "" );
2369+ zassert_equal (DT_STRING_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_0 ), val , 2 ),
2370+ token_first_idx_two , "" );
2371+ zassert_equal (DT_STRING_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_1 ), val , 0 ),
2372+ token_second_idx_zero , "" );
2373+ zassert_equal (DT_STRING_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_1 ), val , 1 ),
2374+ token_second_idx_one , "" );
2375+ zassert_equal (DT_STRING_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_1 ), val , 2 ),
2376+ token_second_idx_two , "" );
2377+ zassert_equal (DT_STRING_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_1 ), val , 3 ),
2378+ token_second_idx_three , "" );
2379+
2380+ zassert_equal (DT_STRING_UPPER_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_0 ), val , 0 ),
2381+ TOKEN_FIRST_IDX_ZERO , "" );
2382+ zassert_equal (DT_STRING_UPPER_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_0 ), val , 1 ),
2383+ TOKEN_FIRST_IDX_ONE , "" );
2384+ zassert_equal (DT_STRING_UPPER_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_0 ), val , 2 ),
2385+ TOKEN_FIRST_IDX_TWO , "" );
2386+ zassert_equal (DT_STRING_UPPER_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_1 ), val , 0 ),
2387+ TOKEN_SECOND_IDX_ZERO , "" );
2388+ zassert_equal (DT_STRING_UPPER_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_1 ), val , 1 ),
2389+ TOKEN_SECOND_IDX_ONE , "" );
2390+ zassert_equal (DT_STRING_UPPER_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_1 ), val , 2 ),
2391+ TOKEN_SECOND_IDX_TWO , "" );
2392+ zassert_equal (DT_STRING_UPPER_TOKEN_BY_IDX (DT_NODELABEL (test_str_array_token_1 ), val , 3 ),
2393+ TOKEN_SECOND_IDX_THREE , "" );
2394+
2395+ /* Test instances */
2396+ #define STRING_TOKEN_BY_IDX_VAR (node_id ) _CONCAT(var_token_, node_id)
2397+ #define STRING_TOKEN_BY_IDX_TEST_INST_EXPANSION (inst ) \
2398+ enum token_string_idx STRING_TOKEN_BY_IDX_VAR(DT_DRV_INST(inst))[] = { \
2399+ DT_INST_STRING_TOKEN_BY_IDX(inst, val, 0), \
2400+ DT_INST_STRING_TOKEN_BY_IDX(inst, val, 1), \
2401+ DT_INST_STRING_TOKEN_BY_IDX(inst, val, 2) \
2402+ };
2403+ DT_INST_FOREACH_STATUS_OKAY (STRING_TOKEN_BY_IDX_TEST_INST_EXPANSION );
2404+
2405+ zassert_equal (STRING_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_0 ))[0 ],
2406+ token_first_idx_zero , "" );
2407+ zassert_equal (STRING_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_0 ))[1 ],
2408+ token_first_idx_one , "" );
2409+ zassert_equal (STRING_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_0 ))[2 ],
2410+ token_first_idx_two , "" );
2411+ zassert_equal (STRING_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_1 ))[0 ],
2412+ token_second_idx_zero , "" );
2413+ zassert_equal (STRING_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_1 ))[1 ],
2414+ token_second_idx_one , "" );
2415+ zassert_equal (STRING_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_1 ))[2 ],
2416+ token_second_idx_two , "" );
2417+
2418+ #define STRING_UPPER_TOKEN_BY_IDX_VAR (node_id ) _CONCAT(var_upper_token, node_id)
2419+ #define STRING_UPPER_TOKEN_BY_IDX_TEST_INST_EXPANSION (inst ) \
2420+ enum token_string_idx STRING_UPPER_TOKEN_BY_IDX_VAR(DT_DRV_INST(inst))[] = { \
2421+ DT_INST_STRING_UPPER_TOKEN_BY_IDX(inst, val, 0), \
2422+ DT_INST_STRING_UPPER_TOKEN_BY_IDX(inst, val, 1), \
2423+ DT_INST_STRING_UPPER_TOKEN_BY_IDX(inst, val, 2) \
2424+ };
2425+ DT_INST_FOREACH_STATUS_OKAY (STRING_UPPER_TOKEN_BY_IDX_TEST_INST_EXPANSION );
2426+
2427+ zassert_equal (STRING_UPPER_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_0 ))[0 ],
2428+ TOKEN_FIRST_IDX_ZERO , "" );
2429+ zassert_equal (STRING_UPPER_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_0 ))[1 ],
2430+ TOKEN_FIRST_IDX_ONE , "" );
2431+ zassert_equal (STRING_UPPER_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_0 ))[2 ],
2432+ TOKEN_FIRST_IDX_TWO , "" );
2433+ zassert_equal (STRING_UPPER_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_1 ))[0 ],
2434+ TOKEN_SECOND_IDX_ZERO , "" );
2435+ zassert_equal (STRING_UPPER_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_1 ))[1 ],
2436+ TOKEN_SECOND_IDX_ONE , "" );
2437+ zassert_equal (STRING_UPPER_TOKEN_BY_IDX_VAR (DT_NODELABEL (test_str_array_token_1 ))[2 ],
2438+ TOKEN_SECOND_IDX_TWO , "" );
2439+ }
2440+
23412441#undef DT_DRV_COMPAT
23422442#define DT_DRV_COMPAT vnd_adc_temp_sensor
23432443ZTEST (devicetree_api , test_reset )
0 commit comments