- 21 Mar, 2014 22 commits
-
-
Pietro Fezzardi authored
It sets how much time the simulator should simulate. The default value is set to 3600 so that running the simulator without specifying the sim_duration_sec option will result in a simulation representing an hour of real time
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
This makes the diagnostics easier to understand, printing MASTER and SLAVE for every message
-
Pietro Fezzardi authored
Now you can assign the name you want to the interfaces, because it doesn't really look for a physical interface with that name. This can be useful to make the diagnostics easier to understand
-
Pietro Fezzardi authored
so that you don't need to be administrator to run the simulator and you don't have conflicts if there is already a PTP instance running on the standard ports
-
Pietro Fezzardi authored
New struct sim_pending_pkt is introduced to hold information on pakets still in fly. An array of such structures is stored in ppg->arch_data. This array is written by every send. The insertion is designed to sort automatically the packets so that the first element of the array after an insertion is always the first packet that will be received. Function sim_fast_forward_ns is changed to update also the reception times into this array, so that when you fast forward, also the pending packets are fast_forwarded. The main loop works in this way: - if there are packets to be received check when - if the first packet to be received is coming before the state machine timestamps expire, then fast forward till it's time to receive it. Then receive it and call the state machine of the receiver - if there are no packet pending or the first pending packet is coming after a timeout, then fast forward till the timeout expires and run all the state machines
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
It will be used to jump ahead in time when no machine is executing.
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
This structure represents all the delays on the outgoing link of the pp_instance. It will be used by the network operations
-
Pietro Fezzardi authored
startup is changed, because we need to set the initial time for the master before we set the initial offset from master fo the slave. In this way the diagnostics cannot be turned on to print out the config for the master. This is not a problem, because the master it's not meant to be configurable
-
Pietro Fezzardi authored
pp_sim_get_master(ppg) always returns a pointer to master pp_instance. pp_sim_get_slave(ppg) always returns a pointer to slave pp_instance. pp_sim_is_master(ppi) and pp_sim_is_slave(ppi) are test for obvious conditions. these last two can be used only if ppi->glbs != NULL, so only if a ppi has been fully initialized.
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
These are namely Data Sets, runtime options, servo and TimeProperties. We need them in every instance because we have two ppi (master and slave) acting like two different machines, so they need different copies of these variables. We just put the per-instance stuff in the arch_data. Then we'll change the pointers in the ppg directly in the net operations, according to our needs.
-
Pietro Fezzardi authored
They're designed to be used for both the instances, master and slave. This is possible because the new data structure pp_sim_time_instance holding all the information about the time of a single instance is placed inside the ppi arch_data
-
Pietro Fezzardi authored
For now it's the same as arch-unix but it will change when we will add more configuration parameters for the simulator. So it's better to change its name, from the beginning
-
Pietro Fezzardi authored
Kconfig is updated with new arch. It compiles but it's actually doing nothing
-
Pietro Fezzardi authored
New prototype for cfg_handler to remove the global variable *current_ppg. The current ppg is now passed as argument to the cfg handler as follows: typedef int (*cfg_handler)(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg); New variable added in include/ppsi/pp-instance.h: struct pp_globals_cfg { int cfg_items; int cur_ppi_n; }; Now struct pp_globals has a new field: struct pp_globals { [...] struct pp_globals_cfg cfg; [...] }; The field cfg_items has been moved from pp_globals to pp_globals_cfg. The configuration routine uses the field cur_ppi_n inside pp_globals_cfg to store the current ppi being configured. So neither the global variable *current_ppi is needed anymore. The helper inline function CUR_PPI has been defined to make accesses to current ppi more readable.
-
Grzegorz Daniluk authored
As it was done also in ptp-noposix. We need to try multiple times because sometimes it takes time for HAL to become ready (especially in the GrandMaster mode when it has to lock SoftPLL to an ext clock).
-
Pietro Fezzardi authored
given that INTS() is defined as inline it should not affect the performance even in time-critical cases.
-
- 02 Mar, 2014 10 commits
-
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
previously one could use config options without arguments, or config options with wrong names, and the program did not complain. now you have to use correct names for config options and only options with type ARG_NONE can be without arguments. hardcoded default config file and config string are supposed always correct so there's still no error check on their parsing. however for any config options passed from command line with -f or -C all the checks are enabled. if there are some syntax errors or options without value the process exits with errors, printing informations on all the found configuration errors.
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
both in comments and in diagnostics
-
Pietro Fezzardi authored
instead of bare numbers
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
now it reflects the definition in pp_ext_hooks. With this new prototype you can always choose a different pp_runtime_opts to be used for the initialization
-
Pietro Fezzardi authored
instead to rewrite every time the checks for the parser
-
- 02 Dec, 2013 3 commits
-
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
Every case of the switch was colling the cfg_handler out of the switch construct, avery time with the same arguments. The only case not calling the config function was case ARG_NONE. But this doesn't make sense, because if a configuration option does not do anything, then it should not be there, even without arguments. So the call to config function is now made from every case, even ARG_NONE, then it should not stay inside the switch.
-
Pietro Fezzardi authored
and all the data structures needed to set configuration options about time. In ppsi.h added struct pp_cfg_time a platform independent timespec-like data structure. union pp_cfg_arg is extended with a pp_cfg_time field. enum pp_argtype is extended with ARG_TIME. In lib/conf.c a case ARG_TIME is added to handle it.
-
- 26 Nov, 2013 2 commits
-
-
Pietro Fezzardi authored
-
Pietro Fezzardi authored
in ppsi.h. This allows to pass only a single argument to cfg_handlers configuration functions. Definitions of functions and arguments have been updated in lib/conf.c to follow this changes.
-
- 18 Nov, 2013 1 commit
-
-
Pietro Fezzardi authored
- backup the existing .config file, if present, and restore it before exiting - make clean before exiting
-
- 15 Nov, 2013 2 commits
-
-
Alessandro Rubini authored
Since check_packet is using network channels (file descriptors), it is better declared as a network operations. This allows, for example, to make a simulator using ARCH=unix and only changing TIME= . Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-
Alessandro Rubini authored
This simplifies the build system, by relying in weak symbols instead of the link order. We need weak symbols anyways for configuration, so we can get rid of the libraries. The size of binaries returned at build time is increased, because arch/ and lib/ stuff is not part of ppsi.o (as it actually should). Signed-off-by: Alessandro Rubini <rubini@gnudd.com>
-