External native C library

This test case it part of the test suite proposed for new devices.

Test case ID: R0910
Language: ST

Code:
tests2/t0910.st
(* requires functions NF1 NF6STR and fbs NFB2 NFB3 declared inside lib/native/func1.st, implemented in library *)
(* timestorun = 2 *)
PROGRAM X02NATIVE
VAR
    C1: INT;
    C2: INT;
    fb: NFB2; 
    fb3 :  NFB3 ;
    s1 ,s2,s3 :STRING;
    r1 : REAL;
END_VAR
VAR_EXTERNAL 
        _T_PARAMS : TEST_PARAMS;
END_VAR 
   C1 := 3;
   C2 := 5;
   C1 := NF1(C1,42); // 45
   C2 := NONNATIVE1F1(C2,42); // 47
   C1 := C1 + 3;    // 48
   C2 := C2 + 3;    // 50
   s1 := 'Hi';
   s2 := NF6STR(s1,'Bye'); // s2: Hi-Bye 
   // _GEB_MSG_(s2);
   r1 := 1.6;
   fb();                  // fb.cont = 101 |  103 
   fb(I1 := 3, I2 := r1); // fb.cont = 102 |  104
      
   fb3(si := '');
   s3 := CONCAT(INT_TO_STRING(400 +(_T_PARAMS.cycle-1)*2),'YES');
   //  _GEB_MSG_('--');
   //_GEB_MSG_(fb3.so );
   //_GEB_MSG_(s3 );
   //_GEB_MSG_('==');
   _GEB_ASSERT_(fb3.so = s3); 
    
     
   fb3(si := s1,I1:=7);  // fb3.cont = 402 | 404
   
IF _T_PARAMS.cycle = _T_PARAMS.timestorun THEN  // last iteration 
         _GEB_ASSERT_(C1 = 48);
         _GEB_ASSERT_(C2 = 50);
         _GEB_ASSERT_(s2 = 'Hi-Bye');
   //  _GEB_MSG_(INT_TO_STRING(fb.O1));
         _GEB_ASSERT_(fb.O1 = 106);
         _GEB_ASSERT_EQFLOAT_(fb.O2 , 2.1);
         
         _GEB_ASSERT_(fb.O1 = 106);
         _GEB_ASSERT_EQFLOAT_(fb.O2 , 2.1);
         // _GEB_MSG_(fb3.so);
         _GEB_ASSERT_(fb3.so = 'Hi403NO'); 
END_IF;

END_PROGRAM 

// just for comparison 
FUNCTION NONNATIVE1F1 : INT 
        VAR_INPUT i,j : INT ;   END_VAR
        NONNATIVE1F1 := ADD_INT(i , j);
END_FUNCTION