How does declare() related to TR-069 RPCs?

I’ve read docs of provision but i’m still not sure if i’m using declare() correctly. By my understanding, declare() would be converted into different TR-069 RPCs when given different arguments, e.g.:

  • declare(path, timestamps, null), timestamps are higher than last refreshed = GPV/GPA
  • declare(path, timestamps, null), timestamps are lower than last refreshed = read from cache
  • declare(path, null, values) = SPV/SPA

Is that correct?

If the timestamp given is newer than the last refresh timestamp for a param the ACS will do a GPV/SPV.

example found on forum search:

Does it mean when timestamp given is newer than the last refresh timestamp:

  • if values is given: SPV/SPA/AO/DO
  • if values is null: GPV/GPA/GPN

for value is SPV/GPV, for object/writable is SPA/GPA/GPN, for path is AO/DO

and when timestamp is null, by default it works like Data.now() is given.