I'm currently implementing support for steerable dishes, loosely based on https://linuxtv.org/patch/12911. In doing so, I'm defining a virtual base class cPositioner, which defines all the functions necessary to control the positioner. An implementation of cDiseqcPositioner will allow control of "DiSEqC 1.2" and "USALS" motors. A plugin can derive from cPositioner and implement its very own way of controlling a positioner (like through a serial or USB port or whatever).
The question I have now is: will it be enough to have *one* single positioner in any given setup, or are there actually users who have more than one positioner? Supporting only a single positioner (as is done in the aforementioned patch) of course simplifies things quite a bit. So I wouldn't want to add this level of complexity unless there is a real need for it.
Any opinions?
Klaus
Al 21/04/13 14:54, En/na Klaus Schmidinger ha escrit:
I'm currently implementing support for steerable dishes, loosely based on https://linuxtv.org/patch/12911. In doing so, I'm defining a virtual base class cPositioner, which defines all the functions necessary to control the positioner.
Is there a preview of the API to comment on? At the very least it should have a "GotoSource" method an "IsPositionedAt" method and something to give visual feedback while the dish is moving, but then my views may be biased by my own implementation.
The question I have now is: will it be enough to have *one* single positioner in any given setup, or are there actually users who have more than one positioner? Supporting only a single positioner (as is done in the aforementioned patch) of course simplifies things quite a bit. So I wouldn't want to add this level of complexity unless there is a real need for it.
Personally I have just one positioner, so my plugin only allows one instance (even worse, my kernel driver only allows one device). I think there are no more than 3 users of the plugin (including myself), so that's not a statistically relevant sample, sorry.
Bye
On 21.04.2013 15:40, Luca Olivetti wrote:
Al 21/04/13 14:54, En/na Klaus Schmidinger ha escrit:
I'm currently implementing support for steerable dishes, loosely based on https://linuxtv.org/patch/12911. In doing so, I'm defining a virtual base class cPositioner, which defines all the functions necessary to control the positioner.
Is there a preview of the API to comment on? At the very least it should have a "GotoSource" method an "IsPositionedAt" method and something to give visual feedback while the dish is moving, but then my views may be biased by my own implementation.
Here's the current interface:
class cPositioner { private: int speed; // the rotation speed of the positioner (degrees * 10 per second) int lastLongitude; int targetLongitude; cTimeMs movementStart; protected: int CalcHourAngle(int Longitude); ///< Takes the longitude and latitude of the dish location from the system ///< setup and the given Longitude to calculate the "hour angle" to which to drive ///< the dish to in order to point to the satellite at orbital position Longitude. ///< An hour angle of zero means the dish shall point directly towards the ///< celestial equator (which is south on the northern hemisphere, and north on ///< the southern hemisphere). Negative values mean that the dish needs to be ///< moved to the left (as seen from behind the dish), while positive values ///< require a movement to the right. ///< See GotoAngle() for the sematics of angles. public: cPositioner(void); virtual ~cPositioner(); virtual void DriveEast(void) {} ///< Continuously drive the dish to the east, until Halt() is called or it hits the ///< soft or hard limit. virtual void DriveWest(void) {} ///< Continuously drive the dish to the west, until Halt() is called or it hits the ///< soft or hard limit. virtual void StepEast(void) {} ///< Move the dish one step to the east. virtual void StepWest(void) {} ///< Move the dish one step to the west. virtual void Halt(void) {} ///< Stop any ongoing motion of the dish. virtual void SetLimitEast(void) {} ///< Set the east soft limit of the dish movement to the current position. virtual void SetLimitWest(void) {} ///< Set the west soft limit of the dish movement to the current position. virtual void DisableLimits(void) {} ///< Disables the soft limits for the dish movement. virtual void StorePosition(int Number) {} ///< Store the current position as a satellite position with the given Number. ///< Number can be in the range 1...255. However, a particular positioner ///< may only have a limited number of satellite positions it can store. virtual void GotoPosition(int Number, int Longitude); ///< Drive the dish to the satellite position stored under the given Number. ///< Number must be one of the values previously used with StorePosition(). ///< The special value 0 shall drive the dish to a "reference position", ///< which usually is due south (or north, if you're on the southern hemisphere). ///< Longitude will be used to calculate how long it takes to drive the dish ///< from its current position to the given Longitude. ///< A derived class must call the base class function to have the target ///< longitude stored. virtual void GotoAngle(int Longitude); ///< Drive the dish to the given angular position. Longitude can be in the range ///< -1800...+1800. A positive sign indicates a position east of Greenwich, ///< while western positions have a negative sign. The absolute value is in ///< "degrees * 10", which allows for a resolution of 1/10 of a degree. ///< A derived class must call the base class function to have the target ///< longitude stored. virtual int CurrentLongitude(void); ///< Returns the longitude the dish currently points at. If the dish is in motion, ///< this may be an estimate based on the angular speed of the positioner. ///< See GotoAngle() for the sematics of angles. ///< The default implementation takes the last and target longitude as well as ///< the rotation speed of the positioner to calculate the estimated current ///< longitude the dish points to. int TargetLongitude(void) { return targetLongitude; } ///< Returns the longitude the dish is supposed to be driven to. Once the target ///< longitude has been reached, this is the same as the value returned by ///< CurrentLongitude(). See GotoAngle() for the sematics of angles. };
Any visual feedback will be done via the channel display of the skin, by comparing CurrentLongitude() to TargetLongitude(). And of course any section filtering will start only after the target position has been reached.
Klaus
Al 21/04/13 15:52, En/na Klaus Schmidinger ha escrit:
Any visual feedback will be done via the channel display of the skin, by comparing CurrentLongitude() to TargetLongitude(). And of course any section filtering will start only after the target position has been reached.
Mmh, how will the system decide between "GotoAngle" and "GotoPosition"? I have a linear actuator and I can only work with pulses. While in theory calculating the angle is possible, it'd be difficult to do and it will vary based on the geometry of the mount. Also, I don't like the use of "Number" in StorePosition, mainly because I've been using Source up until now, but I guess I can live with that.
From the complete interface it seems that everything regarding
positioning will be managed by vdr itself, so the main screen of my plugin[*] will be made redundant (good! I'm lazy), one thing I see missing is some way to show error conditions (I have "Limit reached" and "Motor error", which means the motor isn't moving even if it should).
[*] http://ventoso.org/luca/vdr/screenshot.jpg
Bye
Al 21/04/13 20:17, En/na Luca Olivetti ha escrit:
Al 21/04/13 15:52, En/na Klaus Schmidinger ha escrit:
Any visual feedback will be done via the channel display of the skin, by comparing CurrentLongitude() to TargetLongitude(). And of course any section filtering will start only after the target position has been reached.
Mmh, how will the system decide between "GotoAngle" and "GotoPosition"? I have a linear actuator and I can only work with pulses. While in theory calculating the angle is possible, it'd be difficult to do and it will vary based on the geometry of the mount. Also, I don't like the use of "Number" in StorePosition, mainly because I've been using Source up until now, but I guess I can live with that. From the complete interface it seems that everything regarding positioning will be managed by vdr itself, so the main screen of my plugin[*] will be made redundant (good! I'm lazy), one thing I see missing is some way to show error conditions (I have "Limit reached" and "Motor error", which means the motor isn't moving even if it should).
FYI, I use these states in the driver, shown here with the corresponding message in the plugin:
ACM_IDLE (no message since it's doing nothing) ACM_WEST, ACM_EAST "Dish target %d, position %d" ACM_REACHED "Position reached" ACM_STOPPED, ACM_CHANGE "Motor wait" ACM_ERROR "Motor error"
Limit control is not done by the driver but by the plugin, and the messages are
"Dish at limits" (in manual mode) "Position outside limits" (in positioning mode)
There's also a "Position not set" if the new channel is in it's in a source that's not been memorized (I'm currently implementing a cStatus to detect channel switch).
Bye
On 21.04.2013 20:17, Luca Olivetti wrote:
Al 21/04/13 15:52, En/na Klaus Schmidinger ha escrit:
Any visual feedback will be done via the channel display of the skin, by comparing CurrentLongitude() to TargetLongitude(). And of course any section filtering will start only after the target position has been reached.
Mmh, how will the system decide between "GotoAngle" and "GotoPosition"?
That will be done in diseqc.conf. There may still be another function through which the positioner can tell VDR about its "capabilities".
I have a linear actuator and I can only work with pulses. While in theory calculating the angle is possible, it'd be difficult to do and it will vary based on the geometry of the mount.
The cPositioner class is an abstract model of a device that can steer a dish to a given orbital position (longitude), or a previously stored position (number). How a particular positioner does this is totally up to its implementation.
Also, I don't like the use of "Number" in StorePosition, mainly because I've been using Source up until now, but I guess I can live with that.
You can still use "source", because that's just what is given as the "Longitude" parameter in GotoAngle() (without the 'S').
From the complete interface it seems that everything regarding
positioning will be managed by vdr itself, so the main screen of my plugin[*] will be made redundant (good! I'm lazy),
That's the plan ;-).
one thing I see missing is some way to show error conditions (I have "Limit reached" and "Motor error", which means the motor isn't moving even if it should).
OK, I'll add
virtual cString Error(void) { return NULL; } ///< Returns a short, single line string indicating an error condition. ///< NULL means there is no error.
Klaus
Al 21/04/13 15:52, En/na Klaus Schmidinger ha escrit:
One more observation
virtual void StepEast(void) {} ///< Move the dish one step to the east. virtual void StepWest(void) {} ///< Move the dish one step to the west.
I'd suggest a parameter with the number of steps to move (and for "step" I mean a "pulse", not the next/previous stored satellite position).
Bye
Al 21/04/13 20:36, En/na Luca Olivetti ha escrit:
Al 21/04/13 15:52, En/na Klaus Schmidinger ha escrit:
One more observation
virtual void StepEast(void) {} ///< Move the dish one step to the east. virtual void StepWest(void) {} ///< Move the dish one step to the west.
I'd suggest a parameter with the number of steps to move (and for "step" I mean a "pulse", not the next/previous stored satellite position).
And, I hope, the last one:
virtual void Recalc(int Number) ///<Store the current position in a satellite position with the given Number ///<and recalculate all other positions relative to this one
Oh, and there's a DisableLimits but there's no corresponding EnableLimits
Bye
On 21.04.2013 20:43, Luca Olivetti wrote:
Al 21/04/13 20:36, En/na Luca Olivetti ha escrit:
Al 21/04/13 15:52, En/na Klaus Schmidinger ha escrit:
One more observation
virtual void StepEast(void) {} ///< Move the dish one step to the east. virtual void StepWest(void) {} ///< Move the dish one step to the west.
I'd suggest a parameter with the number of steps to move (and for "step" I mean a "pulse", not the next/previous stored satellite position).
And, I hope, the last one:
virtual void Recalc(int Number) ///<Store the current position in a satellite position with the given Number ///<and recalculate all other positions relative to this one
What would this actually be good for?
Oh, and there's a DisableLimits but there's no corresponding EnableLimits
Unfortunately the DiSEqC specs leave a lot of liberty in this area, so you can never really be sure when the limits will be (re)enabled. I'll add this, though:
virtual void EnableLimits(void) {} ///< Enables the soft limits for the dish movement.
Klaus
Al 22/04/13 11:12, En/na Klaus Schmidinger ha escrit:
virtual void Recalc(int Number) ///<Store the current position in a satellite position with the given Number ///<and recalculate all other positions relative to this one
What would this actually be good for?
Imagine that the dish moved but the counter didn't work, or simply there's some slack accumulated, so the actual position and the registered position differ. Without this method you should store each of the already stored position, with a Recalc method, positioning to one know good satellite would be enough, since the relatives positions would still be good. Actually, the description is wrong, as the effect would be "You, positioner, now are at this position", so it would be something like
"Set as your current position the position specified by Number"
(or longitude if you prefer)
So maybe it should be better called "SetCurrentPosition"
Bye
On 22.04.2013 13:30, Luca Olivetti wrote:
Al 22/04/13 11:12, En/na Klaus Schmidinger ha escrit:
virtual void Recalc(int Number) ///<Store the current position in a satellite position with the given Number ///<and recalculate all other positions relative to this one
What would this actually be good for?
Imagine that the dish moved but the counter didn't work, or simply there's some slack accumulated, so the actual position and the registered position differ. Without this method you should store each of the already stored position, with a Recalc method, positioning to one know good satellite would be enough, since the relatives positions would still be good. Actually, the description is wrong, as the effect would be "You, positioner, now are at this position", so it would be something like
"Set as your current position the position specified by Number"
(or longitude if you prefer)
So maybe it should be better called "SetCurrentPosition"
The specs on the 0x6F command are a little vague. What do you suggest should be sent to a DiSEqC rotor? Something like
6F nn 00 00
where 'nn' is the number of the satellite position the dish currently actually points to?
Klaus
Al 23/04/13 12:41, En/na Klaus Schmidinger ha escrit:
So maybe it should be better called "SetCurrentPosition"
The specs on the 0x6F command are a little vague. What do you suggest should be sent to a DiSEqC rotor? Something like
6F nn 00 00
where 'nn' is the number of the satellite position the dish currently actually points to?
I have no idea about DiSEqC rotors, sorry, I just drive a couple of relays and count the pulses myself (well, actually my device driver/plugin) but it seems such a basic functionality to me that I'd be surprised if it isn't there.
A google search found this http://www.dvbviewer.tv/forum/topic/46086-positioner-console-re-calculate-co...
Bye
On 21.04.2013 20:36, Luca Olivetti wrote:
Al 21/04/13 15:52, En/na Klaus Schmidinger ha escrit:
One more observation
virtual void StepEast(void) {} ///< Move the dish one step to the east. virtual void StepWest(void) {} ///< Move the dish one step to the west.
I'd suggest a parameter with the number of steps to move (and for "step" I mean a "pulse", not the next/previous stored satellite position).
I don't see the need for a "number of steps". This function will be used to fine-tune the position of the dish, so it shall make a very small move. I'll add this to the description:
virtual void StepEast(void) {} ///< Move the dish one step to the east. ///< A "step" is the smallest possible movement the positioner can make, which ///< is typically 0.1 degrees. virtual void StepWest(void) {} ///< Move the dish one step to the west. ///< A "step" is the smallest possible movement the positioner can make, which ///< is typically 0.1 degrees.
Klaus
Al 22/04/13 11:11, En/na Klaus Schmidinger ha escrit:
I'd suggest a parameter with the number of steps to move (and for "step" I mean a "pulse", not the next/previous stored satellite position).
I don't see the need for a "number of steps".
Well, I use it from time to time. Say I move step by step to the west and, after e.g. 5 steps, I discover the signal is getting worse. Instead of hitting 5 times StepEast, I position over the "x steps east" soft button, push 5 on the remote, push ok and I'm at the starting position. Better yet, I move 10 steps east at once to try if going to the other side improves things or not.
Bye
On 22.04.2013 13:35, Luca Olivetti wrote:
Al 22/04/13 11:11, En/na Klaus Schmidinger ha escrit:
I'd suggest a parameter with the number of steps to move (and for "step" I mean a "pulse", not the next/previous stored satellite position).
I don't see the need for a "number of steps".
Well, I use it from time to time. Say I move step by step to the west and, after e.g. 5 steps, I discover the signal is getting worse. Instead of hitting 5 times StepEast, I position over the "x steps east" soft button, push 5 on the remote, push ok and I'm at the starting position. Better yet, I move 10 steps east at once to try if going to the other side improves things or not.
OK, I'll change the interface accordingly.
Klaus
21.04.2013 15:54, Klaus Schmidinger kirjutas:
The question I have now is: will it be enough to have *one* single positioner in any given setup, or are there actually users who have more than one positioner?
Hi and thanks for bringing this feature to the job list! One is enough for me.
I don't have a dish motor myself but FWIW I know a few people who do and they all have only one in their setup.
I currently only have one dish with motor, but if the VDR allows it I might consider a second one. Although in that setup I'm not sure that I would use them on just one system. I would definitely add another receiver, maybe with a possibility to share between the two motorized dishes.
On Sun, Apr 21, 2013 at 4:39 PM, VDR User user.vdr@gmail.com wrote:
I don't have a dish motor myself but FWIW I know a few people who do and they all have only one in their setup.
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr
2013/4/21 Klaus Schmidinger Klaus.Schmidinger@tvdr.de:
I'm currently implementing support for steerable dishes, loosely based on https://linuxtv.org/patch/12911. In doing so, I'm defining a virtual base class cPositioner, which defines all the functions necessary to control the positioner. An implementation of cDiseqcPositioner will allow control of "DiSEqC 1.2" and "USALS" motors. A plugin can derive from cPositioner and implement its very own way of controlling a positioner (like through a serial or USB port or whatever).
The question I have now is: will it be enough to have *one* single positioner in any given setup, or are there actually users who have more than one positioner? Supporting only a single positioner (as is done in the aforementioned patch) of course simplifies things quite a bit. So I wouldn't want to add this level of complexity unless there is a real need for it.
Hmm, I guess most only have single positioner. But this might change if VDR actually supported more than one. :)
However, it would be nice to be able to use twin or quad LNB in positioner, even if using diseqc switches.. I have no idea how to configure this. :)
An example, my system has four tuners. Each one has 4-to-1 diseqc switch. They are configured like this:
# tuner 1: # 1: 27.5W # 2: 7W/8W # 3: 1W # 4: motor # # tuner 2: # 1: 27.5W # 2: 4W/5W # 3: 1W # 4: 16E # # tuner 3: # 1: 1W # 2: 13E # 3: 19.2E # 4: 4.8E # # tuner 4: # 1: 1W # 2: 13E # 3: 19.2E # 4: 4.8E
My positioner actually has twin LNB. I'd like to connect the other output to tuner2 input 2, but there is no way this would work even with heavy patching of VDR..
I think the current diseqc.conf is a bit too complicated. I think it should be better to use some approach where you select LNB type (universal Ku, C band etc), then add Diseqc switches (1.0 or 1.1), and positioners.. Diseqc 1.0 and 1.1 switches can be cascaded.
Perhaps just a text file with lines similar to this: S16E: T1 C1 U1 G
(tuner 1, committed switch input 1, uncommitted switch input 1, use GotoX positioner)
The file could be scanned in order when finding tuner for given satellite. That way you could have priorities, so a tuner with positioner is not "wasted" if some other tuner can tune..
Just my thoughts.. :)
On Mon, Apr 22, 2013 at 11:46:34AM +0300, Teemu Suikki wrote:
2013/4/21 Klaus Schmidinger Klaus.Schmidinger@tvdr.de:
I'm currently implementing support for steerable dishes, loosely based on https://linuxtv.org/patch/12911. In doing so, I'm defining a virtual base class cPositioner, which defines all the functions necessary to control the positioner. An implementation of cDiseqcPositioner will allow control of "DiSEqC 1.2" and "USALS" motors. A plugin can derive from cPositioner and implement its very own way of controlling a positioner (like through a serial or USB port or whatever).
The question I have now is: will it be enough to have *one* single positioner in any given setup, or are there actually users who have more than one positioner? Supporting only a single positioner (as is done in the aforementioned patch) of course simplifies things quite a bit. So I wouldn't want to add this level of complexity unless there is a real need for it.
Thank you Klaus for working on the positioner support. :)
Hmm, I guess most only have single positioner. But this might change if VDR actually supported more than one. :)
However, it would be nice to be able to use twin or quad LNB in positioner, even if using diseqc switches.. I have no idea how to configure this. :)
An example, my system has four tuners. Each one has 4-to-1 diseqc switch. They are configured like this:
...
My positioner actually has twin LNB. I'd like to connect the other output to tuner2 input 2, but there is no way this would work even with heavy patching of VDR..
I think I would be interested to have possibility for multiple positioners later, if VDR would only support it.
Currently I have only one dish, which is motorised. There I have a Quad LNB. VDR has three DVB-S2 tuners (+ unrelated DVB-T(2) tuners).
Tuner 1: Connected directly to LNB Tuner 2: Connected directly to LNB Tuner 3: Connected to LNB via motor
Tuner 3 is used for motor control only, no actual signal is being received there, even it would be and is possible, but this tuner is horrible with weak transponders, yet it's the only tuner I have that can supply 18V to motor+LNB.
I have made VEEERY ugly patching to VDR (as I'm not really a software developer and don't know how things should be done, and I have done some unnecessary things "just in case"), but I think sharing it will give some people some ideas. But atleast it is working perfectly in my environemnt. :) I don't know what kind of unwanted things it may cause elsewhere.
So basicly what I did, I took fd_frontend of tuner 3 (identified by subsystemId), and use it as dfd_frontend. Then I made some changes to device bonding, to restrict devices to same satellite source, instead of same band/polarisation. All devices are set in VDR configuration to "connected to cable 1".
And there I have it, somehow working motorised multi-tuner setup. :)
Patch assumes that VDR is patched with GOTOXX patch.
On 22.04.2013 13:38, Antti Hartikainen wrote:
... I think I would be interested to have possibility for multiple positioners later, if VDR would only support it.
There doesn't seem to be such a big demand for multiple positioners, so I guess I'll take the easy way and assume there is only one.
Currently I have only one dish, which is motorised. There I have a Quad LNB. VDR has three DVB-S2 tuners (+ unrelated DVB-T(2) tuners).
Tuner 1: Connected directly to LNB Tuner 2: Connected directly to LNB Tuner 3: Connected to LNB via motor
I'll see what I can do to make it work with several devices connected to the same movable dish.
Klaus
On Mon, Apr 22, 2013 at 5:33 AM, Klaus Schmidinger Klaus.Schmidinger@tvdr.de wrote:
I think I would be interested to have possibility for multiple positioners later, if VDR would only support it.
There doesn't seem to be such a big demand for multiple positioners, so I guess I'll take the easy way and assume there is only one.
For the sake of future-proofing, maybe the motor stuff can be added in such a way that it wouldn't take a total rewrite to support multi-motor setups in the event it's decided later on such support would be advantageous. Since motor support is finally arriving, we don't want to undershoot (although single motor setups certainly seem like the easy majority).
Another consideration is what setups will look like once VDR advances into server/client design. Will those setups be more likely to have multiple motors? I dunno, but it's worth asking imo.
On 2013.04.21. 15:54, Klaus Schmidinger wrote: (...)
The question I have now is: will it be enough to have *one* single positioner in any given setup, or are there actually users who have more than one positioner?
(...)
Klaus
Currently I have 4 tuners, each of them is connected to several satellite positions via Diseqc 10/1 switches (i have quad LNBs and one LNB on a motorized dish). The configuration is defined in diseqc.conf, and believe me, it wasn't easy to set it up :) Will the rotor implementation change the syntax of diseqc.conf and if yes, will the new syntax be backward compatible with the current one?
thanks,
István
On 22.04.2013 18:12, Füley István wrote:
On 2013.04.21. 15:54, Klaus Schmidinger wrote: (...)
The question I have now is: will it be enough to have *one* single positioner in any given setup, or are there actually users who have more than one positioner?
(...)
Klaus
Currently I have 4 tuners, each of them is connected to several satellite positions via Diseqc 10/1 switches (i have quad LNBs and one LNB on a motorized dish). The configuration is defined in diseqc.conf, and believe me, it wasn't easy to set it up :) Will the rotor implementation change the syntax of diseqc.conf and if yes, will the new syntax be backward compatible with the current one?
The syntax of the diseqc.conf will of course remain compatible, so that existing setups will work unchanged.
There will just be one additional control character (presumably 'P' for "Position"). If it is followed by a number, as in
S19.2E 11700 V 9750 t V W15 [E0 10 38 F0] W15 P1 S19.2E 99999 V 10600 t V W15 [E0 10 38 F1] W15 P1 S19.2E 11700 H 9750 t V W15 [E0 10 38 F2] W15 P1 S19.2E 99999 H 10600 t V W15 [E0 10 38 F3] W15 P1
then GotoPosition() will be called with that number. If there is no number, GotoAngle() will be called with the satellite's longitude.
I'm also thinking of allowing something in the form of
* 11700 V 9750 t V W15 [E0 10 38 F0] W15 P * 99999 V 10600 t V W15 [E0 10 38 F1] W15 P * 11700 H 9750 t V W15 [E0 10 38 F2] W15 P * 99999 H 10600 t V W15 [E0 10 38 F3] W15 P
(note the '*' instead of, e.g., 'S19.2E'), which could be a shortcut for a (USALS) positioner that could receive any satellite (as long as it's above the horizon).
Klaus
On 04/23/2013 01:08 PM, Klaus Schmidinger wrote: ...
I'm also thinking of allowing something in the form of
- 11700 V 9750 t V W15 [E0 10 38 F0] W15 P
- 99999 V 10600 t V W15 [E0 10 38 F1] W15 P
- 11700 H 9750 t V W15 [E0 10 38 F2] W15 P
- 99999 H 10600 t V W15 [E0 10 38 F3] W15 P
(note the '*' instead of, e.g., 'S19.2E'), which could be a shortcut for a (USALS) positioner that could receive any satellite (as long as it's above the horizon).
Klaus
Hi Klaus,
please could it be possible to have functionality of diseqc.conf which allows simple combining of fixed LNB's and motorized dish, so the will it be possible to have in diseqc.conf standard entries like
S19.2E 11700 V 9750 t v W15 [E0 10 38 F0] W15 A W15 t S19.2E 99999 V 10600 t v W15 [E0 10 38 F1] W15 A W15 T S19.2E 11700 H 9750 t V W15 [E0 10 38 F2] W15 A W15 t S19.2E 99999 H 10600 t V W15 [E0 10 38 F3] W15 A W15 T
followed with the new syntax one
* 11700 V 9750 t V W15 [E0 10 38 FC] W15 P * 99999 V 10600 t V W15 [E0 10 38 FD] W15 P * 11700 H 9750 t V W15 [E0 10 38 FE] W15 P * 99999 H 10600 t V W15 [E0 10 38 FF] W15 P
and the standard entries will be prioritized? This will allow to use fixed LNB's as preferable ones in combined diseqc installation. Of course with chance of source choosing (if more than one tuner is used).
My second wish is to have possibility to use the new syntax on all tuners available, so only gotoxx command will be send to the/all tuner, to allow simple cooperation with intelligent vtuner devices like NessieDVB.
Thanks,
Best Regards,
Ales
On 23.04.2013 13:34, Ales Jurik wrote:
On 04/23/2013 01:08 PM, Klaus Schmidinger wrote: ...
I'm also thinking of allowing something in the form of
- 11700 V 9750 t V W15 [E0 10 38 F0] W15 P
- 99999 V 10600 t V W15 [E0 10 38 F1] W15 P
- 11700 H 9750 t V W15 [E0 10 38 F2] W15 P
- 99999 H 10600 t V W15 [E0 10 38 F3] W15 P
(note the '*' instead of, e.g., 'S19.2E'), which could be a shortcut for a (USALS) positioner that could receive any satellite (as long as it's above the horizon).
Klaus
Hi Klaus,
please could it be possible to have functionality of diseqc.conf which allows simple combining of fixed LNB's and motorized dish, so the will it be possible to have in diseqc.conf standard entries like
S19.2E 11700 V 9750 t v W15 [E0 10 38 F0] W15 A W15 t S19.2E 99999 V 10600 t v W15 [E0 10 38 F1] W15 A W15 T S19.2E 11700 H 9750 t V W15 [E0 10 38 F2] W15 A W15 t S19.2E 99999 H 10600 t V W15 [E0 10 38 F3] W15 A W15 T
followed with the new syntax one
- 11700 V 9750 t V W15 [E0 10 38 FC] W15 P
- 99999 V 10600 t V W15 [E0 10 38 FD] W15 P
- 11700 H 9750 t V W15 [E0 10 38 FE] W15 P
- 99999 H 10600 t V W15 [E0 10 38 FF] W15 P
and the standard entries will be prioritized? This will allow to use fixed LNB's as preferable ones in combined diseqc installation.
I'm planning to do it that way.
Of course with chance of source choosing (if more than one tuner is used).
I don't understand what you mean here.
My second wish is to have possibility to use the new syntax on all tuners available, so only gotoxx command will be send to the/all tuner, to allow simple cooperation with intelligent vtuner devices like NessieDVB.
I'm afraid I don't understand this, either. Can you be more specific?
Klaus
On 04/27/2013 04:58 PM, Klaus Schmidinger wrote: ...
Of course with chance of source choosing (if more than one tuner is used).
I don't understand what you mean here.
I thought about the possibility from diseqc.conf:
# A line containing space separated integer numbers, terminated with a ':', # defines that any following DiSEqC sequences apply only to the given list # of device numbers.
But I'm afraid that this remark was not unnecessary, sry.
My second wish is to have possibility to use the new syntax on all tuners available, so only gotoxx command will be send to the/all tuner, to allow simple cooperation with intelligent vtuner devices like NessieDVB.
I'm afraid I don't understand this, either. Can you be more specific?
I thought about possibility to send gotoxx command to all tuners/cards used, not only to the one which has positioner connected. In this case only gotoxx command should be used in all cases - I don't know if only one new entry in diseqc.conf like
* 11700 V 9750 t V W15 P W15 v t * 99999 V 10600 t V W15 P W15 v T * 11700 H 9750 t V W15 P W15 V t * 99999 H 10600 t V W15 P W15 V T
valid for all tuners/cards will be enough.
Thanks,
Best Regards,
Ales
Better to support multi-positioners. Makes options much more flexible.
On 4/21/2013 5:54 AM, Klaus Schmidinger wrote:
I'm currently implementing support for steerable dishes, loosely based on https://linuxtv.org/patch/12911. In doing so, I'm defining a virtual base class cPositioner, which defines all the functions necessary to control the positioner. An implementation of cDiseqcPositioner will allow control of "DiSEqC 1.2" and "USALS" motors. A plugin can derive from cPositioner and implement its very own way of controlling a positioner (like through a serial or USB port or whatever).
The question I have now is: will it be enough to have *one* single positioner in any given setup, or are there actually users who have more than one positioner? Supporting only a single positioner (as is done in the aforementioned patch) of course simplifies things quite a bit. So I wouldn't want to add this level of complexity unless there is a real need for it.
Any opinions?
Klaus
vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr