1%%%------------------------------------------------------------------- 2%%% File : test_driver.erl 3%%% Author : Bertil Karlsson <bertil@finrod> 4%%% Description : 5%%% 6%%% Created : 27 Mar 2002 by Bertil Karlsson <bertil@finrod> 7%%%------------------------------------------------------------------- 8-module(test_driver). 9 10-export([start/0, start/1, init/1, complete/1,complete/0]). 11 12start() -> 13 start("asn1_erl_drv"). 14 15start(SharedLib) -> 16 case erl_ddll:load_driver("../priv/bin/", SharedLib) of 17 ok -> ok; 18 {error, already_loaded} -> ok; 19 Error -> exit({error, could_not_load_driver,Error}) 20 end, 21 spawn(?MODULE, init, [SharedLib]). 22 23init(SharedLib) -> 24 Port = open_port({spawn, SharedLib}, []), 25 register(drv_complete,Port), 26 register(compl_pid,self()), 27 receive 28 stop -> 29 exit(goodbye) 30 end. 31 32complete(Data) -> 33 Ret=port_control(drv_complete,1,Data), 34 io:format("complete result:~n~p~n",[Ret]). 35 36complete() -> 37 %% The result should be <<64,192,17,17,24,96>> 38 Data1 = [<<0:8>>,<<1:8>>,<<2:8>>,<<10:8,2:8,3:8>>,<<20:8,2:8,17:8,17:8>>,<<30:8,2:8,1:8,24:8>>,<<31:8,2:8,0:8,1:8,24:8>>,<<2:8>>], 39 complete(Data1), 40 io:format("should have been:~n<<64,192,17,17,24,96>>~n"), 41 Data2 = [40,8,8,1,0,1,0,1,0,1,0,0,2,1,45,8,1,170,45,7,1,170], 42 complete(Data2), 43 io:format("should have been:~n<<170,0,213,85>>~n"), 44 Data3 = [40,8,8,1,0,1,0,1,0,1,0,0,2,1,45,8,1,170,45,8,1,170], 45 complete(Data3), 46 io:format("should have been:~n<<170,0,213,85,0>>~n"). 47