Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
JUDGMENT P.V. Hardas, J.
1. By this Petition, filed in public interest, the Petitioner, a practicing lawyer in the State of Goa has challenged the appointment of the first Respondent, dated 24th October, 2001, as the President of the Goa Administrative Tribunal.
2. The Petitioner avers that the Petitioner being a practicing lawyer and being interested in the Administration of Justice has filed the present Petition in public interest and in the interest of the legal fraternity of Goa. It is stated that the Goa, Daman & Diu Administrative Tribunal was constituted by the Goa, Daman & Diu Administrative Tribunal Act, 1965 which was passed by the Legislative Assembly of Goa and which subsequently received the assent of the Governor on 26th March, 1965. Consequent to the attainment of Statehood by Goa, in the "Goa, Daman & Diu Administrative Tribunal Act, 1965", the words "Daman and Diu" were omitted. The enactment is, therefore, presently entitled "The Goa Administrative Tribunal Act, 1965". By virtue of an Amendment Act of 1966, the Administrative Tribunal which earlier comprised of a Chairman and such number of other members as was determined by the State Government was amended to make the Tribunal a single member body headed by a President.
3. The Goa, Daman & Diu Administrative Tribunal Rules, 1966, which were framed in the exercise of the powers conferred by Section 13 of the Goa, Daman & Diu Administrative Tribunal Act, the qualifications for appointment of Member or Chairman are prescribed by Rule
2. Sub-Rule 2 of the said Rules prescribed the qualifications for appointment as a Chairman. Sub-Rule 2 reads as under:-
"The Chairman shall be a person who is:
(a) a judicial officer of seven years standing, or
(b) an advocate of seven years standing, or
(c) "holding a superior post not lower than Joint Secretary to the Government, in the Law Department of the Government for at least 3 years."
4. By a Notification which was published in the Government Gazette on 25th May, 2001, the Government of Goa, in exercise of the powers conferred by Section 13 of the Goa Administrative Tribunal Act, 1965 amended the Goa, Daman & Diu Administrative Tribunal Rules, 1966. The words "Daman and Diu" as appearing in the Goa, Daman & Diu Administrative Tribunal Rules, 1966 were omitted. Similarly, the word "Chairman" was substituted by the word "President". Clause (b) of Sub-Rule 2 of Rule 2 was substituted by the following:- "An advocate of not less than seven years standing and with knowledge of Konkani, knowledge of Marathi being desirable".
5. The Petitioner states that the post of the President of the Administrative Tribunal is designated as Group "A" and carries a pay scale of Rs.14,300-400-18,300 which is identical to the pay scale of a District Judge. It is also stated that the President of the Administrative Tribunal enjoys all the emoluments, benefits and privileges as that of a District Judge. It is further stated that the President of the Administrative Tribunal discharges judicial functions and the Tribunal is required to deal with 28 enactments. The Tribunal has Original, Appellate as well as Revisional jurisdiction and the Tribunal even sits in Appeal over the revisions of the Civil Judge, Senior Division. Thus, it is stated that the Government of Goa could not have appointed the first Respondent as the President of the Administrative Tribunal without prior consultation with the High Court as is contemplated in Article 233 of the Constitution of India. The Petitioner has, therefore, prayed for a Writ of quo warranto calling upon the first Respondent to show under what authority he is holding the post of President of Administrative Tribunal and has further prayed for setting aside the appointment of the first Respondent. The other relief which is prayed for is the issuance of Writ of Certiorari for quashing and setting aside the impugned Order of the first Respondent dated 24th October, 2001.
6. A Bill was introduced in the Legislative Assembly in the State of Goa on 19th July, 2001, which was published in the Official Gazette dated 28th July, 2001, seeking to create the post of Additional President of the Administrative Tribunal. The Bill sought to amend Section 3 of the Goa Administrative Tribunal Act, 1965 to include an Additional President who would constitute the Tribunal. The Bill sought to make the powers of the President and the Additional President to be co-extensive and the jurisdiction to be concurrent. Wherever the word "President" occurred, amendment was sought to include the Additional President. The said Bill was thereafter passed by the Goa Legislative Assembly on 23rd July, 2001 and received the assent of the Governor of Goa on 5th September, 2001 and was published in the Official Gazette dated 12th September, 2001. Meanwhile, an advertisement dated 20th July, 2001 was issued for filling up the posts of the President and the Additional President of Goa Administrative Tribunal. In the said advertisement, under the heading "Age", "Essential" and "Other qualifications", it was stated that the candidate should not be less than 40 years of age and should be an Advocate of not less than 7 years of standing with knowledge of Konkani and Marathi being desirable. According to the Petitioner, this advertisement was issued even before the Bill was passed by the Legislative Assembly and received the assent of the Governor. Incidentally, it may be stated that the Petitioner has averred that the sister of the first Respondent is married to the third Respondent who at the relevant time was the Minister for Law, Judiciary and Legislative Affairs, Government of Goa. The Petitioner describes the third Respondent as the "co-brother" of the first Respondent.
7. The Government of Goa had constituted a Committee comprising of Respondent Nos.4, 5 and 6 who are the Law Secretary, the Chairman of Goa Public Service Commission and the Additional Advocate General of State of Goa respectively. It is this Committee of Respondent Nos.4 to 6 which had selected the first Respondent and had recommended his appointment. The first Respondent, therefore, came to be appointed as the President of the Goa Administrative Tribunal by an Order dated 24th October, 2001, published in the Official Gazette dated 8th November, 2001. It may be incidentally mentioned that the appointment of the first Respondent was on probation for a period of two years in the pay scale of Rs.14,300-400-18,300.
8. In response to the notice issued by this Court, the first Respondent filed his reply and had raised a preliminary objection regarding the maintainability of the Petition. According to the first Respondent, the Petitioner had prayed for a Writ of quo warranto and as the first Respondent was holding the requisite qualifications, the Petition was liable to be dismissed. Secondly, it is stated that assuming that consultation with the High Court was necessary, the first Respondent "could" have been appointed as the President of the Goa Administrative Tribunal and, therefore, the Writ of quo warranto would be a futile writ. In response to the allegations that the advertisement had been issued without waiting for the Bill to become the law, the first Respondent states that he had been appointed as the President and not as the Additional President. It is also stated by the first Respondent that none of the appointments to the posts of the President/Chairman of the Administrative Tribunal had been made without prior consultation with the High Court. It may incidentally be stated here that the Petitioner has averred that the fourth Respondent herein, who is a retired District Judge was also holding the additional charge as the President of the Administrative Tribunal. Prior to the appointment of the fourth Respondent, the post of President/Chairman of the Administrative Tribunal had been held by one Shri A. D. Salkar, who was then the Additional District Judge. This post had earlier been held by one Shri F. N. Tavora, who was then a Civil Judge, Senior Division and who had been appointed on deputation to the higher post as President. The first Respondent in his reply has also challenged the locus standi of the Petitioner to file a Petition. The first Respondent has admitted that the sister of the first Respondent is married to the third Respondent but, however, denies the relationship of a "co-brother-in-law". The Respondent No.1 further states that the President of the Administrative Tribunal cannot be equated with a District Judge and, therefore, no prior consultation with the High Court is required. The second Respondent i.e. the State of Goa, in its reply has also challenged the locus standi of the Petitioner to file the present Petition. It is also alleged that the Petitioner is seeking self publicity in the newspapers. It is also stated that the appointment to the post of President of the Administrative Tribunal vests with the State Government and, therefore, prior consultation with the High Court was not necessary. It is stated that there is no irregularity or mala fides involved in the appointment of the first Respondent. The first Respondent, therefore, claimed the dismissal of the Petition.
9. The third Respondent, who then was the Law Minister, has filed his Affidavit contending therein that the first Respondent has been appointed following due procedure as per the Goa Administrative Tribunal Act, 1965 and the Rules framed there under. The third Respondent denied the averment that the first Respondent had been appointed at his behest and further denied that Respondent Nos.4 to 6 were under his direct control. The third Respondent, however, in para 8 of his reply admitted that the sister of the first Respondent is married to the brother of the third Respondent.
10. Respondent Nos.4 and 5 have filed their reply contending therein that out of 35 candidates who had applied, 26 candidates were eligible and were called for interview. The names of the 6 candidates were short listed and the first Respondent was first in the merit list. Respondent Nos.4 and 6 have also stated that there was no irregularity or mala fides involved in the appointment of the first Respondent.
11. When the Petition came up for final hearing, we requested Mr. M. B. DCosta, Advocate to assist the Court as Amicus Curiae. Accordingly, Mr. M. B. DCosta, Advocate has submitted his written submissions, which shall be referred to by us in our Judgment.
12. Section 3, Sub-Section (2) of the Administrative Tribunal Act, 1965 provides that the Tribunal shall consist of a President and an Additional President, both of whom shall be appointed by the Government. It further provides that both the President and the Additional President shall have co-extensive powers and a concurrent jurisdiction to deal with the cases filed in the Tribunal. Let us now examine the nature of the disputes which are referred to the Tribunal for adjudication.
13. Section 7 of the Goa Administrative Tribunal Act, 1965 provides that the Tribunal shall have same powers as are vested in a Civil Court under the Code of Civil Procedure in respect of (i) taking evidence on oath, affirmation or affidavit; (ii) summoning and enforcing the attendance of witnesses; (iii) compelling the discovery and production of documents and material objects; (iv) requisitioning any public record or any copy thereof from any court or office; (v) issuing summons for examination of witnesses or production of documents. While exercising either revisional or appellate jurisdiction as per Section 7(1)(A), the Tribunal has the power, if it thinks necessary to direct further investigation to be made or additional evidence be taken or it may itself take such additional evidence or may remand the case for disposal with such direction as it deems fit. Section 7(2) provides that the Tribunal shall be deemed to be a Civil Court and its proceedings shall be deemed to be judicial proceedings within the meaning of Sections 193, 219 and 228 of the Indian Penal Code. Section 10 of the Act clothes the Tribunal with the powers of review either on its own motion or an application made to it either by the party interested or on the application of the State Government. Section 11 provides that all final orders of the Tribunal shall be executed in the same manner as a Decree of a Civil Court. A Notification, published in the Official Gazette dated 31st December, 1976 clothes the Administrative Tribunal in the exercise of its original, appellate or revisional jurisdiction with all the powers which are vested in a Civil Court.
14. Mr. M. B. DCosta, the learned Counsel appointed as Amicus Curiae, has submitted before us that the Administrative Tribunal has the jurisdiction to decide:
A. Appeals under the Goa School Education Section 22 of the Goa School Education Act, 1984 provides for Appeals to the Administrative Tribunal from orders (i) refusing to recognise a school; (ii) withdrawing recognition of a school; (iii) stopping, reducing or suspending aid; (iv) refusing to grant permission to transfer, mortgage or lease movable or immovable property of a an aided school and (v) dismissing, removing from service any employee or reducing him in rank or retiring compulsorily or otherwise terminating service.
B. Under the Goa University Statutes, a are otherwise terminated or who is reduced in rank by the governing body and aggrieved thereby has a right to appeal to the College Tribunal. By Notification in the Official Gazette, the Administrative Tribunal has been constituted as a Tribunal for the adjudication of disputes or differences between the employee and the management of any affiliated college or institution. By a Notification dated 5th November, 1998, the Government of Goa constituted a College Tribunal consisting of the President of the Administrative Tribunal as its Presiding Officer.
C. Section 184(B) of the Goa Municipalities constitute one or more Appellate Tribunals for deciding Appeals arising from the Orders passed under Section
184. The Government of Goa by virtue of Notification dated 20th July, 1994 constituted the Administrative Tribunal as the Appellate Tribunal under Section 184(B) of the Goa Municipalities Act, 1968 and has appointed the Chairman of the Administrative Tribunal as the Presiding Officer of the Appellate Tribunal. It is interesting to refer to Section 184(B)(3) of the Goa Municipalities Act, 1968 which provided that a person shall not be qualified for appointment as the Presiding Officer of the Appellate Tribunal unless he is or has been a District Judge or an Additional District Judge or has for the last 10 years held a Judicial Office in India or has practiced as an Advocate for not less than 10 years in a High Court in India.
Rule 11 of the Goa Municipalities Appellate Tribunal Rules, 1989 provides that the Appellate Tribunal shall have all the powers which are vested in a Civil Court under the Code of Civil Procedure. It also provides that the Appellate Tribunal shall be deemed to be a Civil Court for all purposes and the proceedings before it shall be deemed to be judicial proceedings within the meaning of Sections 193 and 196 and for the purposes of Section 228 of the Indian Penal Code and it also provides that the Appellate Tribunal shall be deemed to be a Civil Court for the purposes of Section 195 and Chapter XXVI of the Code of Criminal Procedure.
D. Appeals under the Maharashtra Co-operative Administrative Tribunal against the decision of the Registrars nominee. Thus, the Administrative Tribunal exercises the appellate jurisdiction over the Judgments and Orders passed by the Co-operative Court as the Maharashtra Co-operative Societies Act in its application to Goa confers the powers of the Co-operative Judge either on the Registrar or its nominee. Section 149(2) provides that the Tribunal shall consist of a President who shall be a person appointed as the President of the Administrative Tribunal under Section 3 of the Administrative Tribunal Act, 1965. Here also, it is interesting to note that Rule 101(1) provides that the President of the Administrative Tribunal shall be a person who has been a Judge of any High Court in India or who is or had been a District & Sessions Judge or who has been a Chairman of the Goa, Daman and Diu Administrative Tribunal appointed under Section 3 of the Administrative Tribunal Act, 1965.
E. Appeals, Second Appeals and References lie to the Administrative Tribunal. In this regard, a reference may be made to Section 3(A)(1) of the Goa, Daman and Diu Sales Tax Act, 1964, which provides that the Administrative Tribunal shall consist of a person who has held a Civil Judicial post for at least 10 years or who has been a Member of the Central Legal Service for at least 3 years or who has been in practice as an Advocate at least for 10 years.
F. The Administrative Tribunal also hears Appeals under Section 22 of the Goa, Daman and Diu Administration of Evacuee Property Act, 1964.
G. The Administrative Tribunal also hears Appeals and Second Appeals under the Goa Tax on Luxuries(Hotels and Lodging Houses) Act, 1988.
H. The Administrative Tribunal also hears Appeals under the Goa, Daman and Diu Public Gambling Act, 1976.
I. Article 49 of the Code of Communidade, 1961, provides for an Appeal to the Administrative Tribunal in case of irregularities in the Election. The Administrative Tribunal has also the power to annul the Election. Similarly, Article 154 empowers the Administrative Tribunal to decide the Appeals instituted against the decisions of the Administrator of the Communidade in matters subject to litigation as well as those pertaining to the sheets of yearly returns and expenses of the Communidade. Similarly, the Administrative Tribunal is empowered to decide matters pertaining to irregularities in the auctions of Communidade verified and communicated by the Administrator as well as those alleged by parties in accordance with the Code of Communidade. The Administrative Tribunal has also empowered the Communidade to file suits as well as to give up, confess or conciliate and authorise the respective expenses.
J. The Administrative Tribunal also hears and register as Mahajans under Article 26(2) of the Devasthan Regulations. Similarly, the Administrative Tribunal also hears and decides Appeals against the orders of the Administrator(Mamlatdar) under Article 71 of the Devasthan Regulations.
K. The Administrative Tribunal also hears and Act, 1973.
L. The Administrative Tribunal also hears and Act, 1973.
M. The Administrative Tribunal also hears and 1997.
N. The Administrative Tribunal also hears and Pollution) Act, 1981.
O. The Administrative Tribunal also hears and Pollution) Act, 1974.
P. The Administrative Tribunal also hears and Rules, 2000.
Q. The Administrative Tribunal also hears and Waste (Management and Handling) Rules, 1998.
R. The Administrative Tribunal also hears and Farming Regulation Act, 1991.
S. The Administrative Tribunal also hears and of the Goa, Daman and Diu Agricultural Tenancy Act, 1964.
T. The Administrative Tribunal also hears and of the Goa, Daman and Diu Mundkar Protection from Eviction Act.
U. The Administrative Tribunal also hears and Revenue Code, 1968.
V. The Administrative Tribunal also hears and Proprietorship of Villages) Act, 1962.
W. The Administrative Tribunal also hears and Diu Act, 1970.
15. Apart from this, the Administrative Tribunal decides Election disputes relating to the Election of the Managing Committee under Article 30 of the Devasthan Regulation. Similarly, under Article 49 of the Code of Communidade, the Administrative Tribunal decides the Election Petition relating to the Election of the Managing Committee. The Administrative Tribunal also decides a Election Petition under Section 16 of the Goa Panchayat Raj Act, 1993 and under Section 144(T) of the Maharashtra Co-operative Societies Act as applicable to Goa. The Administrative Tribunal also decides Election disputes regarding the Election of the President and Vice President of the Goa Municipalities Act, in terms of Section 52(5) of the said Act. Under the Maharashtra Municipalities Act, the designated Court is the Court of the District Judge for deciding the Election disputes under the Maharashtra Municipalities Act.
16. It is thus clear that the Administrative Tribunal performs judicial functions and is a Court. The Administrative Tribunal adjudicates upon disputes that would have been within the jurisdiction of the ordinary Civil Courts to decide. The Administrative Tribunal acts as an Appellate Court against the decision of the Registrars nominee under the Maharashtra Co-operative Societies Act as applicable to Goa.
17. The learned Single Judge of this Court in Maharashtra Co-operative Courts Bar Association and 1990(3) BCR 437 has held that the Judges of the Co-operative Court are Judicial Officers and their appointments are to be governed by Article 234 of the Constitution of India. The Administrative Tribunal acts as an Appellate Court over the decisions rendered by the Registrars nominee, who in Goa functions as the Co-operative Court. The Administrative Tribunal is clothed with judicial powers and hears and decides Appeals and Revisions and is, therefore, a Court though the nominclature is that of "Administrative Tribunal". The powers which the President of the Administrative Tribunal exercises and which are conferred on him are judicial in nature and the orders passed by the Administrative Tribunal are binding on the parties. The next question is whether the President of the Administrative Tribunal can be considered as a "District Judge" within the definition of their term in Article 236 of the Constitution of India. It may incidentally be stated that the pay scales of the President of the Administrative Tribunal and that of a District Judge are identical.
18. Mr. A. N. S. Nadkarni, the learned Advocate General appearing on behalf of the second Respondent i.e. the State of Goa has very fairly conceded that the appointment of the first Respondent cannot be sustained. According to the learned Advocate General, prior consultation with the High Court as is contemplated in Article 233 is a must before appointing any person as President of the Administrative Tribunal.
19. Mr. M. B. DCosta, the learned Amicus Curiae has invited our attention to the Judgment of the Apex Court in State of Maharastra v. Labour Law 2 SCC 688 to urge before us that the Administrative Tribunal is a Court as it adjudicates upon disputes that would have been within the jurisdiction of the ordinary Civil Courts. Their Lordships of the Supreme Court after considering Chandra Mohan v. State of U.P. should not be interpreted narrowly to exclude from judicial service new hierarchy of Civil Courts being set up which are headed by a Judge who can be considered as a District Judge bearing in mind the extensive definition of their term in Article 236 of the Constitution of India". In para 20, Their Lordships of the Supreme Court have endorsed the view of the High Court which have held that the persons presiding over Industrial and Labour Courts would constitute a judicial service so defined and, therefore, the recruitment of Labour Court Judges would be required to be made in accordance with Article 234 of the Constitution of India.
20. Mr. M. B. DCosta, the learned Amicus Curiae then invited our attention to the Judgment of the Apex Court in State of Bihar and another v. Bal Mukund Sah and others and particularly to para 45 of the Report which reads thus:- "As we have already seen above, the second part of Article 235 deals with the topic of other conditions of service including the right of appeal which might be guaranteed to judicial officers by appropriate legislation enacted by the authorities acting under Article 309 but that is an operation on the limited field permitted by the second part of Article 235 at the second level of the pyramid of the Subordinate Judiciary and nothing more. Dr. Dhavan was right when he contended that on the scheme of Articles 233 to 235 it is not as if other legislation is a total taboo.
However, the said submission ignores the fact that it is the limited field earmarked by the second part of Article 235 regarding permissible regulation of conditions of service that is reserved for operation of Article 309 through its appropriate authorities. But, save and except this limited aspect which is permitted, the rest of the control totally vests in the High Court under Article 235 first part.
What is permitted by Article 235 cannot be considered as a blanket power entrusted to the Legislature or to the Governor under Article 309 by the Constitution-makers dehors the complete net of constitutional scheme controlling recruitment and appointment to the District Judiciary and the Subordinate Judiciary under Articles 233 and 234 of the Constitution of India.
These twin articles conspicuously do not envisage even the limited independent field for operation of Article 309 as is permitted by Article 235 second part. That Constitution-makers that so far as appointment to available vacancies and Judges of the Subordinate Legislature nor the Governor, High Court, can have any supplied by us)
21. Similarly, our attention was also invited to the decision of the Apex Court in Chandramouleshwar and particularly to the observations of the Apex Court at para 7 which reads thus: "Consultation with the High Court under Article 233 is not an empty formality. So far as promotion of officers to the cadre of District Judges is concerned the High Court is best fitted to adjudge the claims and merits of persons to be considered for promotion. The Governor cannot discharge his function under Article 233 if he makes an appointment of a person without ascertaining the High Courts view in regard thereto.
It was strenuously contended on behalf of the State of Bihar that the materials before the Court amply demonstrate that there had been consultation with the High Court before the issue of the notification of October 17, 1968.
It was said that the High Court had given the Government its views in the matter; the Government was posted with all the facts and there was consultation sufficient for the purpose of Article 233.
We cannot accept this.
Consultation or deliberation is not complete or effective before the parties thereto make their respective points of view known to the other or others and discuss and examine the relative merits of their views. If one party makes a proposal to the other who has a counter proposal in his mind which is not communicated to the proposer the direction to give effect to the counter proposal without anything more, cannot be said to have been issued after consultation. In our opinion, the notification of October 17, 1968 was not in compliance with Article 233 of the Constitution. In the absence of consultation the validity of the notification of October 17, 1968 cannot be sustained".
22. Thus, looking to the functions of the Administrative Tribunal, we are of the considered view that the Administrative Tribunal is a Court. Since, it is vested with judicial powers of Appeal and Revision under the various statutes, which powers are to be exercised by a District Judge, we are of the view that the post of the President of the Administrative Tribunal is equivalent to the post of a District Judge within the meaning of Article 236 of the Constitution of India. In our considered view, therefore, the Respondent No.1 could not have been appointed as the President of the Administrative Tribunal without prior consultation with the High Court. The Respondent No.1 has, therefore, not been appointed in terms of Article 233 of the Constitution of India and, therefore, his appointment is illegal and he is usurper of the Office of the Administrative Tribunal.
23. Mr. M. S. Usgaonkar, the learned Senior Counsel appearing on behalf of the first Respondent has urged before us that the first Respondent is qualified as per the qualifications prescribed and thus the appointment of the first Respondent has not been made in contravention of the Goa Administrative Tribunal Acts and Rules. Further, it is urged by Mr. Usgaonkar, the learned Senior Counsel appearing on behalf of the first Respondent that since the Respondent No.1 fulfils the eligibility criteria, the Respondent No.1 could be appointed after consultation with the High Court and thus, the writ of quo warranto would be futile. The learned Senior Counsel appearing on behalf of the first Respondent has placed strong reliance on the decision in P. L. Lakhanpal v. Ajit Nath Ray reported in AIR 1975 prayed for against the then Chief Justice of India on the ground that the Chief Justice of India had been appointed in violation of Article 124(2) of the Constitution of India as the mandatory consultation comprehended was not made and as the Rule of seniority which inheres in that Article was not followed and the appointment was malafide. The Full Bench of the Delhi High Court held that the issue of the writ of quo warranto would be futile because of the result of resignation of the Judges who were senior to Justice A. N. Ray(Respondent) had resigned and Justice A. N. Ray, therefore, became the senior most puinse Judge and not only could be re-appointed but would be entitled to be re-appointed as the Chief Justice of India.
24. The decision of the Full Bench and the point canvassed by Mr. M. S. Usgaonkar, the learned Counsel appearing on behalf of the first Respondent fell for consideration before the Division Bench of this Court in the Judgment of Gajanan Krishnaji Bapat v. Corporation I.C. 167. The Division Bench in para 15 after considering the Full Bench Judgment of the Delhi High Court has held thus:-
"Though the above cases have dealt with the principle of the futility of the writ of quo warranto, we think that this aspect of futility will have to be borne in mind even when we consider the grant or otherwise of any other type of writ, order or direction.
Ordinarily, this Court would not issue a writ which has an element of futility. But the main question is as to whether in the present case an order or writ quashing the impugned orders is likely to become futile or not.
It was contended by Mr. Bobde that the Corporation may in its meeting re-appoint respondent No.4. He drew our attention to the fact that respondent No.4 is qualified to hold the post of Dean and as such there could not be any impediment for the re-appointment of the respondent No.4. We think that the principle of futility arising on account of the likelihood of re-appointment cannot be extended to a case where the appointing authority has no power to make the appointment. To put it more clearly, would it be possible for the appointing authority, as also the appointed person, to say that though the appointment has not emanated from the competent, still do not quash the appointment because one cannot rule out the possibility that some rightful authority having competence to make the appointment may make the appointment in favour of respondent No.4? We feel that such defence would not be permissible by extending the principle of futility of a writ.
The contingency of re-appointment would have some importance when the person who has made the first appointment can make such re-appointment after curing any irregularity. This does not include a case where the appointing authority has no power to make an appointment. It was rightly urged on behalf of the petitioner that if the respondents contention is accepted, the position would become very anomalous and irrational, as any person could make any appointment for any post and the appointee with all impurity would sit tight on the post by asking the Court not to exercise the discretion as the possibility of the rightful authority re-appointing that person could not be ruled out".
25. Mr. M. S. Usgaonkar, the learned Senior Counsel appearing on behalf of the first Respondent has not seriously canvassed the point of locus standi of the Petitioner to file the Petition. However, a reference may usefully be made in the Judgment of the Apex Court in S. P. Gupta v. Union of India reported in 1981(Supp) SCC 87 wherein the Apex Court has held thus:-
"Yet again, whenever there is a public wrong or public injury caused by an act or omission of the State or a public authority which is contrary to the Constitution or the law, any member of the public acting bona fide and having sufficient interest can maintain an action for redressal of such public wrong or public injury. The strict rule of standing which insists that only a person who has suffered a specific legal injury can maintain an action for judicial redress is relaxed and a broad rule is evolved which gives standing to any member of the public who is not a mere busybody or a meddlesome interloper but one who has sufficient interest in the proceeding. In the absence of a machinery to effectively represent the public interest generally in courts, it is necessary to liberalise the rule of standing in order to provide judicial redress for public injury arising from breach of public duty or from other violation of the Constitution or the law by allowing public minded persons and organisations to move the court and act for a general or group interest, even though, they may not be directly injured in their own rights. It is only by liberalising the rule of locus standi that it is possible to effectively police the corridors of power and prevent violations of law. The oppression might be financial, commercial, corporate or governmental".
26. The appointment of the first Respondent cannot be faulted on the ground that the first Respondent is a relative of the third Respondent who was then the State Law Minister. An independent Selection Committee had been constituted comprising of Respondent Nos.4, 5 and 6 and they had selected the first Respondent from amongst the various candidates who had applied in pursuance to the advertisement. The Selection Committee comprising of Respondent Nos.4, 5 and 6 are independent persons and there is nothing to suggest that the said Selection Committee was amenable to being pressurised in selecting a particular candidate. There is also nothing on record to suggest that the third Respondent, who is distantly related to the first Respondent, has in any manner influenced the Selection Committee. We, therefore, see no merit in this submission of the Petitioner.
27. We, therefore, unhesitantly hold that the appointment of Respondent No.1 is not by any authority of law. The Government had no authority to appoint the first Respondent as the President of the Administrative Tribunal in flagrant breach of the mandate of Article 233 of the Constitution of India. In the preceding para of the Judgment, we have held that the post of the President of the Administrative Tribunal is equivalent to the post of a District Judge as defined in Article 236 of the Constitution of India. Thus, the Order appointing the first Respondent dated 24th October, 2001 cannot be sustained and deserves to be quashed.
28. This is a public interest litigation and the Petitioner has not challenged the validity of the Rules relating to the appointment of the President of the Administrative Tribunal. The appointment of the first Respondent, without prior consultation with the High Court, is ultra vires the Constitution of India. Hence the Rules are ineffective and unenforceable. According to us, the Rules providing for the appointment of the President of the Administrative Tribunal instead of being struck down as unconstitutional, can be read down to include consultation with the High Court, in consonance with Article 233 of the Constitution of India, before appointing any person as the President of the Administrative Tribunal.
29. The Apex Court in Delhi Transport Corporation 1991 SC 101 has held as under:
"The doctrine of reading down or of recasting the statute can be applied in limited situations. It is essentially used, firstly, for saving a statute from being struck down on account of its unconstitutionality. It is an extension of the principle that when two interpretations are possible one rendering it constitutional and the other making it unconstitutional, the former should be preferred. The unconstitutionality may spring from either the incompetence of the legislature to enact the statute or from its violation of any of the provisions of the Constitution. The second situation which summons its aid is where the provisions of the statute are vague and ambiguous and it is possible to gather the intentions of the legislature from the object of the statute, the context in which the provision occurs and the purpose for which it is made".
30. Relying on the aforesaid Judgment of the Apex Court, we are of the considered opinion that in order to save the Rules from being struck down as ultra vires the Constitution, the Rules should be read down to mandatorily include consultation with the High Court before making any appointment to the post of the President or the Additional President of the Administrative Tribunal.
31. We hope that in future when the appointments to the post of the President of the Administrative Tribunal are made, Article 233 of the Constitution of India would be followed in its letter and spirit so that the independence of the Judiciary is secured which the Apex Court says is the "bulkwark".
32. Before parting with the Judgment, we must place on record our deep appreciation to the efforts taken by Mr. M. B. DCosta, the learned Counsel appointed by us as Amicus Curiae, in placing before us the relevant and necessary data which has enabled us to effectively adjudicate the point raised in this Petition.
33. In the result, therefore, Writ Petition No.351 of 2001 is allowed. The appointment of the first Respondent as the President of the Administrative Tribunal, dated 24th October, 2001, is hereby quashed and set aside. Rule made absolute in terms of prayer clauses (a) and (b) with no order as to costs.


Generating parameters and structures
Model components
#
Fishmetica.gm1
— Function.
generates x,y with M,F,W,kx,kw,x1j,xt1
#
Fishmetica.sigma
— Function.
returns sigma for j
#
Fishmetica.ushape
— Function.
returns u-function for j
#
Fishmetica.w
— Function.
returns wieght for t,j (according to the ovsyannikov data)
#
Fishmetica.gwtj
— Function.
wtj
#
Fishmetica.h
— Function.
fills H with 1's
#
Fishmetica.ghtj
— Function.
mtj
#
Fishmetica.gmtj
— Function.
mtj
#
Fishmetica.gft
— Function.
ft=0.2
#
Fishmetica.gftj
— Function.
ftj
#
Fishmetica.gx
— Function.
x
#
Fishmetica.gy
— Function.
y
#
Fishmetica.gg
— Function.
generates g matrix with m and f, tmax,jmax
#
Fishmetica.gz
— Function.
returns total mortality z as sum of natural m and fishing f mortality matrices
#
Fishmetica.gm_burago
— Function.
x,y
#
Fishmetica.gm
— Function.
x,y
Adding noise
#
Fishmetica.noise2ts_burago
— Function.
adds some noise with d(m,s) (laplace, normal) to a matrix
Optimization
#
Fishmetica.Lp
— Function.
look how to evaluate closeness of data and model!!!! as L1+L2 no prints out
#
Fishmetica.Lp12
— Function.
look how to evaluate closeness of data and model!!!! as L1+L2
#
Fishmetica.Lmine2
— Function.
L as L1+L2 with dispersions for the normal distribution, p=2 no prints out
#
Fishmetica.Lmine2max
— Function.
L as max no prints out
#
Fishmetica.Lpv
— Function.
evaluates criteria
#
Fishmetica.buragofunc
— Function.
criterion (Laplace) evaluation for cohorts of cst type/Lp, p=1
#
Fishmetica.buragofuncp2
— Function.
criterion (Gauss) evaluation for cohorts of cst type/Lp, p=2
#
Fishmetica.minefuncp2
— Function.
criterion (normal, deviation) evaluation for cohorts of cst type/Lmine2, p=2
#
Fishmetica.minefuncp2max
— Function.
criterion (normal, deviation) evaluation for cohorts of cst type/Lmine2max, p=2
#
Fishmetica.buragofunc12
— Function.
criterion (normal, deviation) evaluation for cohorts of cst type/Lp12, p=2
#
Fishmetica.buragofunc_vjt_2
— Function.
returns Lpv
#
Fishmetica.buragofunc_v
— Function.
returns Lpv
#
Fishmetica.buragoconstraint1
— Function.
constraint
#
Fishmetica.buragoconstraint2
— Function.
constraint
#
Fishmetica.buragoconstraint3
— Function.
constraint
#
Fishmetica.buragoconstraint4
— Function.
constraint
#
Fishmetica.buragoconstraint5
— Function.
constraint
#
Fishmetica.buragoconstraint6
— Function.
constraint
#
Fishmetica.optimizeLf
— Function.
optimizes func with 2 algs (a -main and a1 - local), (burago)func (Lp, Lp12, etc) and 4 buragoconstraints
#
Fishmetica.optimizeL
— Function.
optimizes Lp with 2 algs (a -main and a1 - local), buragofunc and 4 buragoconstraints
#
Fishmetica.optimizeLs
— Function.
optimizes Lp with 1 algs (a -main), buragofunc and 4 buragoconstraints, no lower_bounds, no x_tol, no local_optimizer? no population
#
Fishmetica.optimizeLp_v
— Function.
optimizes Lpv
#
Fishmetica.optimizeLp_v2
— Function.
optimizes Lp with 2 algs (a -main and a1 - local), buragofunc_v and 4 buragoconstraints
#
Fishmetica.optimizeLp_vjt_2
— Function.
returns (minf,minx,ret)
#
Fishmetica.opt_v
— Function.
evaluates vector of unknown pars with use of given ALGS=(:LN_NELDERMEAD, :LN_SBPLX, :LN_COBYLA, :LN_NEWUOA, :LN_PRAXIS, :LN_BOBYQA, :LN_AUGLAG, :LN_AUGLAG_EQ) from NLopt and LN_AUGLAG (7), xx - initial approximation for pars, k - number of iterations, algs - list of algs
Testing generated matrices
#
Fishmetica.testgmx
— Function.
checks if generated with M, F matrix x corresponds to model relations
#
Fishmetica.testgmy
— Function.
checks if generated with M, F, W matrix y corresponds to model relations
#
Fishmetica.testgmy1
— Function.
checks if generated with parameters matrix y corresponds to model relations


|
UART001App
|
This file contains all public data structures,enums and function prototypes for SinglePhPWM with dead time APP. More...
This file contains all public data structures,enums and function prototypes for SinglePhPWM with dead time APP.
Definition in file CCU8PWMLIB.h.
#include <DAVE3.h>
Data Structures | |
| struct | CCU8PWMLIB_TimerRegsType |
| struct | CCU8PWMLIB_DynamicHandleType |
| struct | CCU8PWMLIB_HandleType |
Functions | |
| status_t | CCU8PWMLIB_Init (const CCU8PWMLIB_HandleType *HandlePtr) |
| This function is used to initialize the APP. It will configure CCU8_CCy slice registers with the selected PWM parameters. | |
| status_t | CCU8PWMLIB_Deinit (const CCU8PWMLIB_HandleType *HandlePtr) |
| This will reset the CCU8_CCy slice registers to default state. | |
| status_t | CCU8PWMLIB_EnableExtStart (const CCU8PWMLIB_HandleType *HandlePtr) |
| This function enables the externat start feature. | |
| status_t | CCU8PWMLIB_DisableExtStart (const CCU8PWMLIB_HandleType *HandlePtr) |
| This function disables the externat start feature. This is useful for multiphase PWM app to disable this functionality to avoid spurious start of the slices due to other instances of the app. | |
| status_t | CCU8PWMLIB_Start (const CCU8PWMLIB_HandleType *HandlePtr) |
| This will start the Single Phase PWM with Dead Time APP which will in turn start the CCU8_CCy slice. This function needs to be called to start the App even if External Start feature of CCU8 is configured. | |
| status_t | CCU8PWMLIB_Stop (const CCU8PWMLIB_HandleType *HandlePtr) |
| This will stop the Single Phase PWM with Dead Time APP which will in turn stop the CCU8_CCy slice. This function needs to be called even if external stop feature is configured | |
| status_t | CCU8PWMLIB_SetCompare (const CCU8PWMLIB_HandleType *HandlePtr, uint32_t Compare1, uint32_t Compare2) |
| This function will modify the duty cycle of the output waveform which will change the pulse width. Duty cycle is given in terms of the compare register value and not in terms of the percentage. | |
| status_t | CCU8PWMLIB_SetDutyCycle (const CCU8PWMLIB_HandleType *HandlePtr, float DutyCycle, uint32_t Shift, uint8_t Sign) |
| This function will modify the duty cycle of the output waveform which will change the pulse width. Duty cycle is given in terms of percentage. | |
| status_t | CCU8PWMLIB_SetPeriod (const CCU8PWMLIB_HandleType *HandlePtr, uint32_t PwmFreq) |
| This function will modify the pwm frequency of the output waveform which will change the pulse width. In case of timer concatenation,given value is split into two 16-bit values and they are programmed in Second and First slice. e.g. 0x80000010 value is written as 0x8000 as Period register of Second slice and 0x0010 as period register of first slice. Total PWM period is ((0x8000 +1) * 0x0010) + 1. | |
| status_t | CCU8PWMLIB_SetPeriodAndCompare (const CCU8PWMLIB_HandleType *HandlePtr, uint32_t PwmFreq, uint32_t Compare1, uint32_t Compare2) |
| This function will modify the pwm frequency and duty cycle of the output waveform which will change the pulse width. Frequency is given as period register value and duty cycle is given as compare register value. In case of timer concatenation,given value is split into two 16-bit values and they are programmed in Second and First slice. e.g. 0x80000010 value is written as 0x8000 as Period register of Second slice and 0x0010 as period register of first slice. Total PWM period is ((0x8000 +1) * 0x0010) + 1. | |
| status_t | CCU8PWMLIB_SetPwmFreq (const CCU8PWMLIB_HandleType *HandlePtr, float PwmFreq) |
| This function will modify the pwm frequency of the output waveform . | |
| status_t | CCU8PWMLIB_SetPwmFreqAndDutyCycle (const CCU8PWMLIB_HandleType *HandlePtr, float PwmFreq, float DutyCycle, uint32_t Shift, uint8_t Sign) |
| This function will modify the pwm frequency and duty cycle of the output waveform . | |
| status_t | CCU8PWMLIB_SetTimerVal (const CCU8PWMLIB_HandleType *HandlePtr, uint32_t TimerVal) |
| This will update the timer register value when timer is stopped. This is used to set the starting value of the timer. It is useful API in the single shot mode. | |
| status_t | CCU8PWMLIB_SWRequestShadowTransfer (const CCU8PWMLIB_HandleType *HandlePtr) |
| This will request the update of the period register, compare register values from the respective shadow transfers. This function needs to be called when shadow compare and period registers are updated explicitely by top level app. NOTE: SetDutyCycle and SetPwmFreq functions handle shadow transfer request. No need to call this function after changing the duty cycle and PWM frequency. | |
| status_t | CCU8PWMLIB_GetPeriodReg (const CCU8PWMLIB_HandleType *HandlePtr, uint32_t *PeriodRegPtr) |
| This function will read the period register value.This will be useful to calculate the compare register values. | |
| status_t | CCU8PWMLIB_ResetTrapFlag (const CCU8PWMLIB_HandleType *HandlePtr) |
| This function will reset the trap flag by checking whether trap condition is reset. | |
| status_t | CCU8PWMLIB_GetTimerRegsVal (const CCU8PWMLIB_HandleType *HandlePtr, CCU8PWMLIB_TimerRegsType *TimerRegsPtr) |
| This function will read the timer values of compare register and period register. | |
| status_t | CCU8PWMLIB_GetTimerStatus (const CCU8PWMLIB_HandleType *HandlePtr, uint32_t *TimerStatusPtr) |
| This function will read the timer status whether timer is running or idle. | |
| status_t | CCU8PWMLIB_EnableEvent (const CCU8PWMLIB_HandleType *HandlePtr, const CCU8PWMLIB_EventNameType Event) |
| This function will enable the event. This should be called by the user first for interrupt handling. | |
| status_t | CCU8PWMLIB_DisableEvent (const CCU8PWMLIB_HandleType *HandlePtr, const CCU8PWMLIB_EventNameType Event) |
| This function will disable the event. | |
| status_t | CCU8PWMLIB_ClearPendingEvent (const CCU8PWMLIB_HandleType *HandlePtr, const CCU8PWMLIB_EventNameType Event) |
| This function will clear the pending event. | |
| status_t | CCU8PWMLIB_SetPendingEvent (const CCU8PWMLIB_HandleType *HandlePtr, const CCU8PWMLIB_EventNameType Event) |
| This function will forcefully set the event.This function should not be called within interrut handler to avoid infinite loop. | |
| status_t | CCU8PWMLIB_GetPendingEvent (const CCU8PWMLIB_HandleType *HandlePtr, const CCU8PWMLIB_EventNameType Event, uint8_t *EvtStatus) |
| This function will check whether given event is set. | |
| status_t | CCU8PWMLIB_SetDutyEdgeAlignAsymmetric (const void *HdlPtr, float DutyCycle, uint32_t Shift, uint8_t Sign) |
| This function will be internally called by CCU8PWMLIB_SetDutyCycle when edge aligned asymmetric mode is selected. | |
| status_t | CCU8PWMLIB_SetDutyEdgeAlignSymmetric (const void *HdlPtr, float DutyCycle, uint32_t Shift, uint8_t Sign) |
| This function will be internally called by CCU8PWMLIB_SetDutyCycle when edge aligned symmetric mode is selected. | |
| status_t | CCU8PWMLIB_SetDutyEdgeAlignSymmetricTimerConcat (const void *HdlPtr, float DutyCycle, uint32_t Shift, uint8_t Sign) |
| This function will be internally called by CCU8PWMLIB_SetDutyCycle when edge aligned symmetric with timer concatenation mode is selected. | |
| status_t | CCU8PWMLIB_SetDutyCenterAlignSymmetric (const void *HandlePtr, float DutyCycle, uint32_t Shift, uint8_t Sign) |
| This function will be internally called by CCU8PWMLIB_SetDutyCycle when center aligned symmetric mode is selected. | |
| status_t | CCU8PWMLIB_SetDutyCenterAlignAsymmetric (const void *HandlePtr, float DutyCycle, uint32_t Shift, uint8_t Sign) |
| This function will be internally called by CCU8PWMLIB_SetDutyCycle when center aligned symmetric mode is selected. | |
| status_t | CCU8PWMLIB_SetCompareAsymmetric (const void *HdlPtr, uint32_t Compare1, uint32_t Compare2) |
| This function will be internally called by CCU8PWMLIB_SetCompare when asymmetric mode is selected. | |
| status_t | CCU8PWMLIB_SetCompareSymmetric (const void *HdlPtr, uint32_t Compare1, uint32_t Compare2) |
| This function will be internally called by CCU8PWMLIB_SetCompare when symmetric mode is selected. | |
| status_t | CCU8PWMLIB_SetCompareEdgeAlignSymmetricTimerConcat (const void *HdlPtr, uint32_t Compare1, uint32_t Compare2) |
| This function will be internally called by CCU8PWMLIB_SetCompare when edge-aligned symmetric mode with timer concatenation is selected. | |
| #define | CCU8PWMLIB_EVENT_0 0x01 |
| #define | CCU8PWMLIB_EVENT_1 0x02 |
| #define | CCU8PWMLIB_EVENT_2 0x03 |
| #define | CCU8PWMLIB_ACTIVE_LOW 0x00 |
| #define | CCU8PWMLIB_ACTIVE_HIGH 0x01 |
| #define | CCU8PWMLIB_ALL_CCU8_INTR_CLEAR 0x00000F3F |
| #define | CCU8PWMLIB_SLICE_CLEAR 0x07 |
| #define | CCU8PWMLIB_LPF 0x0 |
| #define | CCU8PWMLIB_COUNT(PwmTime, Res) (uint32_t)(PwmTime/Res) |
| #define | CCU8PWMLIB_EDGE_PERIOD_VAL(count) (uint32_t)(count -1) |
| #define | CCU8PWMLIB_CENTER_PERIOD_VAL(count) (uint32_t)((count <<1) -1 ) |
| #define | CCU8PWMLIB_COMPARE_MODE 0x00 |
| enum | CCU8PWMLIB_StateType { CCU8PWMLIB_UNINITIALIZED, CCU8PWMLIB_INITIALIZED, CCU8PWMLIB_RUNNING, CCU8PWMLIB_STOPPED } |
| enum | CCU8PWMLIB_CCUInUseType { CCU8PWMLIB_SLICE0, CCU8PWMLIB_SLICE1, CCU8PWMLIB_SLICE2, CCU8PWMLIB_SLICE3 } |
| enum | CCU8PWMLIB_ErrorCodesType { CCU8PWMLIB_OPER_NOT_ALLOWED_ERROR = 1, CCU8PWMLIB_INVALID_PARAM_ERROR, CCU8PWMLIB_IN_TRAP_ERROR, CCU8PWMLIB_FUNCTION_ENTRY, CCU8PWMLIB_FUNCTION_EXIT } |
| enum | CCU8PWMLIB_DeadTimeConfType { CCU8PWMLIB_DISABLE, CCU8PWMLIB_ENABLE, CCU8PWMLIB_ENABLEDIRECTOUTPUT, CCU8PWMLIB_ENABLEINVERTEDOUTPUT } |
| enum | CCU8PWMLIB_CompareModeType { CCU8PWMLIB_SYMMETRIC, CCU8PWMLIB_ASYMMETRIC } |
| enum | CCU8PWMLIB_EdgeTriggerType { CCU8PWMLIB_NOTRIGGER, CCU8PWMLIB_RISINGEDGE, CCU8PWMLIB_FALLINGEDGE, CCU8PWMLIB_BOTHEDGES } |
| enum | CCU8PWMLIB_CountingModeType { CCU8PWMLIB_EDGE_ALIGNED, CCU8PWMLIB_CENTER_ALIGNED } |
| enum | CCU8PWMLIB_ExtStartConfigType { CCU8PWMLIB_START_TIMER, CCU8PWMLIB_CLEAR_START_TIMER } |
| enum | CCU8PWMLIB_ExtStopConfigType { CCU8PWMLIB_STOP_TIMER, CCU8PWMLIB_CLEAR_TIMER, CCU8PWMLIB_CLEAR_STOP_TIMER } |
| enum | CCU8PWMLIB_EventNameType { CCU8PWMLIB_PERIODMATCHEVENT = 0, CCU8PWMLIB_COMPAREMATCHEVENT = 2, CCU8PWMLIB_EXTSTARTEVENT = 8, CCU8PWMLIB_EXTSTOPEVENT = 9, CCU8PWMLIB_TRAPEVENT = 10 } |
| typedef enum CCU8PWMLIB_StateType | CCU8PWMLIB_StateType |
| typedef enum CCU8PWMLIB_CCUInUseType | CCU8PWMLIB_CCUInUseType |
| typedef enum CCU8PWMLIB_ErrorCodesType | CCU8PWMLIB_ErrorCodesType |
| typedef enum CCU8PWMLIB_DeadTimeConfType | CCU8PWMLIB_DeadTimeConfType |
| typedef enum CCU8PWMLIB_CompareModeType | CCU8PWMLIB_CompareModeType |
| typedef enum CCU8PWMLIB_CountingModeType | CCU8PWMLIB_CountingModeType |
| typedef enum CCU8PWMLIB_ExtStartConfigType | CCU8PWMLIB_ExtStartConfigType |
| typedef enum CCU8PWMLIB_ExtStopConfigType | CCU8PWMLIB_ExtStopConfigType |
| typedef enum CCU8PWMLIB_EventNameType | CCU8PWMLIB_EventNameType |
| typedef struct CCU8PWMLIB_TimerRegsType | CCU8PWMLIB_TimerRegsType |
| typedef struct CCU8PWMLIB_DynamicHandleType | CCU8PWMLIB_DynamicHandleType |
| typedef struct CCU8PWMLIB_HandleType | CCU8PWMLIB_HandleType |
| #define CCU8PWMLIB_ACTIVE_HIGH 0x01 |
Active high level
Definition at line 82 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_ACTIVE_LOW 0x00 |
Active low level
Definition at line 78 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_ALL_CCU8_INTR_CLEAR 0x00000F3F |
To clear all the interrupts of CCU
Definition at line 86 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_CENTER_PERIOD_VAL | ( | count | ) | (uint32_t)((count <<1) -1 ) |
This is the period register value in center-aligned mode
Definition at line 107 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_COMPARE_MODE 0x00 |
This is the value to set compare mode
Definition at line 110 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_COUNT | ( | PwmTime, | |
| Res | |||
| ) | (uint32_t)(PwmTime/Res) |
To count the period register value from the PWM frequency and the CCU8 clock.
Definition at line 99 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_EDGE_PERIOD_VAL | ( | count | ) | (uint32_t)(count -1) |
This is the period register value in edge-aligned mode
Definition at line 103 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_EVENT_0 0x01 |
This is mask for Event 0
Definition at line 66 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_EVENT_1 0x02 |
This is mask for Event 1
Definition at line 70 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_EVENT_2 0x03 |
This is mask for event 2
Definition at line 74 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_LPF 0x0 |
low pass filter value
Definition at line 94 of file CCU8PWMLIB.h.
| #define CCU8PWMLIB_SLICE_CLEAR 0x07 |
To clear the CCU8 slice.
Definition at line 90 of file CCU8PWMLIB.h.
| typedef enum CCU8PWMLIB_CCUInUseType CCU8PWMLIB_CCUInUseType |
This enumerates the CCU8x_CCy slice used by Single Phase PWM with Dead time APP.
| typedef enum CCU8PWMLIB_CompareModeType CCU8PWMLIB_CompareModeType |
This enumerates the compare mode of the CCU8_CCy slice timer - symmetric comparison or asymmetric comparison
| typedef enum CCU8PWMLIB_CountingModeType CCU8PWMLIB_CountingModeType |
This enumerates the CCU8_CCy slice timer operating mode - edge-aligned or center-aligned.
| typedef enum CCU8PWMLIB_DeadTimeConfType CCU8PWMLIB_DeadTimeConfType |
This enumerates dead time configuration for the CCU8_CCy slice channels
| typedef struct CCU8PWMLIB_DynamicHandleType CCU8PWMLIB_DynamicHandleType |
This structure will hold the configuration parameters which change at run time.
| typedef enum CCU8PWMLIB_ErrorCodesType CCU8PWMLIB_ErrorCodesType |
This enumerates the error codes of this APP which will be returned from a function as a return parameter.
| typedef enum CCU8PWMLIB_EventNameType CCU8PWMLIB_EventNameType |
This enumerates the events of the CCU8PWMLIB app.
This enumerates the external start configuration of the timer.
| typedef enum CCU8PWMLIB_ExtStopConfigType CCU8PWMLIB_ExtStopConfigType |
This enumerates the external stop configuration of the timer.
| typedef struct CCU8PWMLIB_HandleType CCU8PWMLIB_HandleType |
This structure holds all the static configuration parameters for the Single Phase PWM with Dead Time APP.
| typedef enum CCU8PWMLIB_StateType CCU8PWMLIB_StateType |
This structure enumerates the states of the Single Phase PWM with dead time APP.
| typedef struct CCU8PWMLIB_TimerRegsType CCU8PWMLIB_TimerRegsType |
This structure holds the values of the compare register, period register.
This enumerates the CCU8x_CCy slice used by Single Phase PWM with Dead time APP.
| CCU8PWMLIB_SLICE0 |
This is slice 0 of CCU8 |
| CCU8PWMLIB_SLICE1 |
This is slice 1 of CCU8 |
| CCU8PWMLIB_SLICE2 |
This is slice 2 of CCU8 |
| CCU8PWMLIB_SLICE3 |
This is slice 3 of CCU8 |
Definition at line 157 of file CCU8PWMLIB.h.
This enumerates the compare mode of the CCU8_CCy slice timer - symmetric comparison or asymmetric comparison
Definition at line 235 of file CCU8PWMLIB.h.
This enumerates the CCU8_CCy slice timer operating mode - edge-aligned or center-aligned.
Definition at line 274 of file CCU8PWMLIB.h.
This enumerates dead time configuration for the CCU8_CCy slice channels
Definition at line 211 of file CCU8PWMLIB.h.
| CCU8PWMLIB_NOTRIGGER |
Trigger is not required. |
| CCU8PWMLIB_RISINGEDGE |
Trigger on rising edge |
| CCU8PWMLIB_FALLINGEDGE |
Trigger on falling edge |
| CCU8PWMLIB_BOTHEDGES |
Trigger on both edges |
Definition at line 251 of file CCU8PWMLIB.h.
This enumerates the error codes of this APP which will be returned from a function as a return parameter.
Definition at line 181 of file CCU8PWMLIB.h.
This enumerates the events of the CCU8PWMLIB app.
Definition at line 330 of file CCU8PWMLIB.h.
This enumerates the external start configuration of the timer.
| CCU8PWMLIB_START_TIMER |
This will set the run bit of the timer. |
| CCU8PWMLIB_CLEAR_START_TIMER |
This will first clear the timer and then set the run bit of the timer. |
Definition at line 295 of file CCU8PWMLIB.h.
This enumerates the external stop configuration of the timer.
Definition at line 310 of file CCU8PWMLIB.h.
| enum CCU8PWMLIB_StateType |
This structure enumerates the states of the Single Phase PWM with dead time APP.
Definition at line 131 of file CCU8PWMLIB.h.
| status_t CCU8PWMLIB_ClearPendingEvent | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| const CCU8PWMLIB_EventNameType | Event | ||
| ) |
This function will clear the pending event.
| [in] | HandlePtr | pointer to the Instance variable |
| [in] | Event | Event to be cleared |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_Deinit | ( | const CCU8PWMLIB_HandleType * | HandlePtr | ) |
This will reset the CCU8_CCy slice registers to default state.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_DisableEvent | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| const CCU8PWMLIB_EventNameType | Event | ||
| ) |
This function will disable the event.
| [in] | HandlePtr | pointer to the Instance variable |
| [in] | Event | Event to be disabled |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_DisableExtStart | ( | const CCU8PWMLIB_HandleType * | HandlePtr | ) |
This function disables the externat start feature. This is useful for multiphase PWM app to disable this functionality to avoid spurious start of the slices due to other instances of the app.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_EnableEvent | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| const CCU8PWMLIB_EventNameType | Event | ||
| ) |
This function will enable the event. This should be called by the user first for interrupt handling.
| [in] | HandlePtr | pointer to the Instance variable |
| [in] | Event | Event to be enabled |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_EnableExtStart | ( | const CCU8PWMLIB_HandleType * | HandlePtr | ) |
This function enables the externat start feature.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_GetPendingEvent | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| const CCU8PWMLIB_EventNameType | Event, | ||
| uint8_t * | EvtStatus | ||
| ) |
This function will check whether given event is set.
| [in] | HandlePtr | pointer to the Instance variable |
| [in] | Event | Event to be set |
| [in] | EvtStatus | Status of the eventwhether it is set |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_GetPeriodReg | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| uint32_t * | PeriodRegPtr | ||
| ) |
This function will read the period register value.This will be useful to calculate the compare register values.
| [out] | PeriodRegPtr | |
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_GetTimerRegsVal | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| CCU8PWMLIB_TimerRegsType * | TimerRegsPtr | ||
| ) |
This function will read the timer values of compare register and period register.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | TimerRegsPtr | Pointer to CCU8PWMLIB_TimerRegsType structure |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_GetTimerStatus | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| uint32_t * | TimerStatusPtr | ||
| ) |
This function will read the timer status whether timer is running or idle.
| [out] | TimerStatusPtr | |
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_Init | ( | const CCU8PWMLIB_HandleType * | HandlePtr | ) |
This function is used to initialize the APP. It will configure CCU8_CCy slice registers with the selected PWM parameters.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_ResetTrapFlag | ( | const CCU8PWMLIB_HandleType * | HandlePtr | ) |
This function will reset the trap flag by checking whether trap condition is reset.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_SetCompare | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| uint32_t | Compare1, | ||
| uint32_t | Compare2 | ||
| ) |
This function will modify the duty cycle of the output waveform which will change the pulse width.
Duty cycle is given in terms of the compare register value and not in terms of the percentage.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | Compare1 | It corresponds to compare register 1 value. |
| [in] | Compare2 | It corresponds to compare register 2 value. |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_SetCompareAsymmetric | ( | const void * | HdlPtr, |
| uint32_t | Compare1, | ||
| uint32_t | Compare2 | ||
| ) |
This function will be internally called by CCU8PWMLIB_SetCompare when asymmetric mode is selected.
| [in] | HdlPtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | Compare1 | Compare register1 value |
| [in] | Compare2 | Compare register 2 value |
| status_t CCU8PWMLIB_SetCompareEdgeAlignSymmetricTimerConcat | ( | const void * | HdlPtr, |
| uint32_t | Compare1, | ||
| uint32_t | Compare2 | ||
| ) |
This function will be internally called by CCU8PWMLIB_SetCompare when edge-aligned symmetric mode with timer concatenation is selected.
| [in] | HdlPtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | Compare1 | Compare register1 value |
| [in] | Compare2 | Compare register 2 value |
| status_t CCU8PWMLIB_SetCompareSymmetric | ( | const void * | HdlPtr, |
| uint32_t | Compare1, | ||
| uint32_t | Compare2 | ||
| ) |
This function will be internally called by CCU8PWMLIB_SetCompare when symmetric mode is selected.
| [in] | HdlPtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | Compare1 | Compare register1 value |
| [in] | Compare2 | Compare register 2 value |
| status_t CCU8PWMLIB_SetDutyCenterAlignAsymmetric | ( | const void * | HandlePtr, |
| float | DutyCycle, | ||
| uint32_t | Shift, | ||
| uint8_t | Sign | ||
| ) |
This function will be internally called by CCU8PWMLIB_SetDutyCycle when center aligned symmetric mode is selected.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | DutyCycle | It corresponds to compare register's value. |
| [in] | Shift | It controls the duty cycle value. |
| [in] | Sign | It controls addition and substraction of shift |
| status_t CCU8PWMLIB_SetDutyCenterAlignSymmetric | ( | const void * | HandlePtr, |
| float | DutyCycle, | ||
| uint32_t | Shift, | ||
| uint8_t | Sign | ||
| ) |
This function will be internally called by CCU8PWMLIB_SetDutyCycle when center aligned symmetric mode is selected.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | DutyCycle | It corresponds to compare register's value. |
| [in] | Shift | It controls the duty cycle value. |
| [in] | Sign | It controls addition and substraction of shift |
| status_t CCU8PWMLIB_SetDutyCycle | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| float | DutyCycle, | ||
| uint32_t | Shift, | ||
| uint8_t | Sign | ||
| ) |
This function will modify the duty cycle of the output waveform which will change the pulse width.
Duty cycle is given in terms of percentage.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | DutyCycle | It corresponds to duty cycle in percentage. |
| [in] | Shift | It controls the duty cycle value. |
| [in] | Sign | It controls addition and subtraction of shift Sign = 0: Compare value is incremented by shift. This is not allowed in edge-aligned. Sign = 1: Compare value is decremented by shift. |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_SetDutyEdgeAlignAsymmetric | ( | const void * | HdlPtr, |
| float | DutyCycle, | ||
| uint32_t | Shift, | ||
| uint8_t | Sign | ||
| ) |
This function will be internally called by CCU8PWMLIB_SetDutyCycle when edge aligned asymmetric mode is selected.
| [in] | HdlPtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | DutyCycle | It corresponds to compare register's value. |
| [in] | Shift | It controls the duty cycle value. |
| [in] | Sign | It controls addition and subtraction of shift |
| status_t CCU8PWMLIB_SetDutyEdgeAlignSymmetric | ( | const void * | HdlPtr, |
| float | DutyCycle, | ||
| uint32_t | Shift, | ||
| uint8_t | Sign | ||
| ) |
This function will be internally called by CCU8PWMLIB_SetDutyCycle when edge aligned symmetric mode is selected.
| [in] | HdlPtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | DutyCycle | It corresponds to compare register's value. |
| [in] | Shift | It controls the duty cycle value. |
| [in] | Sign | It controls addition and subtraction of shift |
| status_t CCU8PWMLIB_SetDutyEdgeAlignSymmetricTimerConcat | ( | const void * | HdlPtr, |
| float | DutyCycle, | ||
| uint32_t | Shift, | ||
| uint8_t | Sign | ||
| ) |
This function will be internally called by CCU8PWMLIB_SetDutyCycle when edge aligned symmetric with timer concatenation mode is selected.
| [in] | HdlPtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | DutyCycle | It corresponds to compare register's value. |
| [in] | Shift | It controls the duty cycle value. |
| [in] | Sign | It controls addition and subtraction of shift |
| status_t CCU8PWMLIB_SetPendingEvent | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| const CCU8PWMLIB_EventNameType | Event | ||
| ) |
This function will forcefully set the event.This function should not be called within interrut handler to avoid infinite loop.
| [in] | HandlePtr | pointer to the Instance variable |
| [in] | Event | Event to be set |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_SetPeriod | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| uint32_t | PwmFreq | ||
| ) |
This function will modify the pwm frequency of the output waveform which will change the pulse width.
In case of timer concatenation,given value is split into two 16-bit values and they are programmed in Second and First slice.
e.g. 0x80000010 value is written as 0x8000 as Period register of Second slice and 0x0010 as period register of first slice. Total PWM period is ((0x8000 +1) * 0x0010) + 1.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | PwmFreq | It corresponds to period register's value. |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_SetPeriodAndCompare | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| uint32_t | PwmFreq, | ||
| uint32_t | Compare1, | ||
| uint32_t | Compare2 | ||
| ) |
This function will modify the pwm frequency and duty cycle of the output waveform which will change the pulse width.
Frequency is given as period register value and duty cycle is given as compare register value. In case of timer concatenation,given value is split into two 16-bit values and they are programmed in Second and First slice.
e.g. 0x80000010 value is written as 0x8000 as Period register of Second slice and 0x0010 as period register of first slice. Total PWM period is ((0x8000 +1) * 0x0010) + 1.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | PwmFreq | It corresponds to period register's value. |
| [in] | Compare1 | It corresponds to compare register 1 value. |
| [in] | Compare2 | It corresponds to compare register 2 value. |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_SetPwmFreq | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| float | PwmFreq | ||
| ) |
This function will modify the pwm frequency of the output waveform
.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | PwmFreq | It corresponds to frequency in hertz |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_SetPwmFreqAndDutyCycle | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| float | PwmFreq, | ||
| float | DutyCycle, | ||
| uint32_t | Shift, | ||
| uint8_t | Sign | ||
| ) |
This function will modify the pwm frequency and duty cycle of the output waveform
.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | PwmFreq | It corresponds to frequency in hertz |
| [in] | DutyCycle | It corresponds to duty cycle in percentage. |
| [in] | Shift | It controls the duty cycle value. |
| [in] | Sign | It controls addition and subtraction of shift Sign = 0: Compare value is incremented by shift. This is not allowed in edge-aligned. Sign = 1: Compare value is decremented by shift. |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_SetTimerVal | ( | const CCU8PWMLIB_HandleType * | HandlePtr, |
| uint32_t | TimerVal | ||
| ) |
This will update the timer register value when timer is stopped. This is used to set the starting value of the timer. It is useful API in the single shot mode.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
| [in] | TimerVal |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_Start | ( | const CCU8PWMLIB_HandleType * | HandlePtr | ) |
This will start the Single Phase PWM with Dead Time APP which will in turn start the CCU8_CCy slice.
This function needs to be called to start the App even if External Start feature of CCU8 is configured.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_Stop | ( | const CCU8PWMLIB_HandleType * | HandlePtr | ) |
This will stop the Single Phase PWM with Dead Time APP which will in turn stop the CCU8_CCy slice.
This function needs to be called even if external stop feature is configured
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
Reentrancy: Yes
Sync/Async: Synchronous
| status_t CCU8PWMLIB_SWRequestShadowTransfer | ( | const CCU8PWMLIB_HandleType * | HandlePtr | ) |
This will request the update of the period register, compare register values from the respective shadow transfers. This function needs to be called when shadow compare and period registers are updated explicitely by top level app.
NOTE: SetDutyCycle and SetPwmFreq functions handle shadow transfer request. No need to call this function after changing the duty cycle and PWM frequency.
| [in] | HandlePtr | Pointer to CCU8PWMLIB_HandleType structure |
Reentrancy: Yes
Sync/Async: Synchronous


A common feature of interfaces using jsPlumb is that the elements are draggable. You should use the draggable
method
on a jsPlumbInstance
to configure this:
myInstanceOfJsPlumb.draggable("elementId");
...because if you don't, jsPlumb won't know that an element has been dragged, and it won't repaint the element.
draggable
supports several types as argument:
A "list-like" element is one that exposes a length
property and which can be indexed with brackets ([ ]
). Some examples are:
jsPlumbInstance.draggable(["elementOne", "elementTwo"]);
jsPlumbInstance.draggable($(".someClass"));
var els = document.querySelectorAll(".someClass");
jsPlumbInstance.draggable(els);
If you absolutely cannot use jsPlumb.draggable
, you will have to arrange to repaint the drag element manually, via
jsPlumb.repaint
.
Note jsPlumb
is an instance of the jsPlumbInstance
class. If you are working with your own instances of jsPlumb, be
sure to call the draggable method on those instances, not the global instance.
In vanilla jsPlumb, drag support is provided by a bundled library called Katavorio. Katavorio supports drag containment and constraining elements to a grid, as well as drag/drop of multiple elements.
You must set position:absolute
on elements that you intend to be draggable. The reasoning for this is that all
libraries implement dragging by manipulating the left and top properties of an element's style attribute.
When you position an element absolute, these left
/top
values are taken to mean with respect to the origin of this
element's offsetParent
, and the offsetParent
is the first ancestor of the element that has position:relative
set
on it, or the body if no such ancestor is found.
When you position an element relative, the left
/top
values are taken to mean move the element from its normal
position by these amounts, where "normal position" is dependent on document flow. You might have a test case or two
in which relative positioning appears to work; for each of these you could create several others where it does not.
You cannot trust relative positioning with dragging.
A common request is for the ability to contain the area within which an element may be dragged. Vanilla jsPlumb offers support for containing a dragged element within the bounds of its parent:
jsPlumb.draggable("someElement", {
containment:true
});
To constrain elements to a grid, supply the size of the grid in the draggable
call:
jsPlumb.draggable("someElement", {
grid:[50,50]
});
jsPlumb takes nesting into account when handling draggable elements. For example, say you have this markup:

...and then you connect one of those child divs to something, and make container draggable:
jsPlumb.connect({
source:$("#container .childType1"),
target:"somewhere else"
});
jsPlumb.draggable("container");
Now when you drag container
, jsPlumb will have noticed that there are nested elements that have Connections, and they
will be updated. Note that the order of operations is not important here: if container was already draggable when you
connected one of its children to something, you would get the same result.
For performance reasons, jsPlumb caches the offset of each nested element relative to its draggable ancestor. If you
make changes to the draggable ancestor that will have resulted in the offset of one or more nested elements changing,
you need to tell jsPlumb about it, using the revalidate
function.
Consider the example from before, but with a change to the markup after initializing everything:

header

Connect a child div to some element and make it draggable:
jsPlumb.connect({
source:$("#container .childType1"),
target:"somewhere else"
});
jsPlumb.draggable($(".childType1"));
Now if you manipulate the DOM in such a way that the internal layout of the container node is changed, you need to tell jsPlumb:
$("#container .header").hide(); // hide the header bar. this will alter the offset of the other child elements...
jsPlumb.revalidate("container"); // tell jsPlumb that the internal dimensions have changed.
// you can also use a selector, eg $("#container")
Note in this example, one of the child divs was made draggable. jsPlumb automatically recalculates internal offsets after dragging stops in that case - you do not need to call it yourself.
Vanilla jsPlumb, because it uses Katavorio as its drag library, supports dragging multiple elements at once. There are two ways to do this.
Every jsPlumb instance has an associated dragSelection
- a set of elements that are considered to be "selected" (and
which have a CSS class assigned to them to indicate this fact). Any drag event occurring in the instance will cause the
currently selected elements to be dragged too.
There are three methods provided to work with the drag selection:
As previously mentioned, these methods are all provided by Katavorio.
Here, elements
can be a single element Id or element, or an array of either of these (or, in fact, a jQuery selector,
since jsPlumb knows that selectors are "list-like").
Since jsPlumb 2.0.0 there is another way of configuring multiple element drag - the concept of a posse
. This is a
group of elements that should all move whenever one of them is dragged. This mechanism is intended to be used for more
"permanent" multiple drag arrangements - you may have a set of nodes that should always move together and they do
not need to be considered to be "selected".
You can define multiple posses in an instance but each element can belong to one posse only. Three methods are provided for working wth Posses:
Here, elements
can be a single element Id or element, or an array of either of these (or, in fact, a jQuery selector,
since jsPlumb knows that selectors are "list-like"). posse
is required, and is a varargs parameter: you can provide
more than one. Each posse
parameter can either be a String, indicating a Posse to which the element should be added
as an active drag participant, or an object containing the Posse's ID and also whether or not the element should be an
active drag participant.
For example, in the Flowchart demo, we could make these couple of calls:
jsPlumb.addToPosse(["flowchartWindow1", "flowchartWindow2"], "posse");
jsPlumb.addToPosse("flowchartWindow3", {id:"posse",active:false})
And the result would be that whenever window 1 or 2 was dragged, all of windows 1, 2 and 3 would be dragged. But if window 3 was dragged, it would be dragged alone; windows 1 and 2 would not move.
Remove the given element(s) from Posse(s). As with addToPosse
, the second parameter is a varargs parameter: you can
supply a number of posse IDs at once:
jsPlumb.removeFromPosse("flowchartWindow1", "posse1", "posse2");
Remove the given element(s) from all of the Posses to which it/they belong.
jsPlumb.removeFromAllPosses("flowchartWindow1");
jsPlumb.removeFromAllPosses(["flowchartWindow2", "flowchartWindow3"]);
The default browser behaviour on mouse drag is to select elements in the DOM. To assist with handling this, this class is attached to the body at drag start:
jtk-drag-select
The class is removed at drag end.
A suitable value for this class (this is from the jsPlumb demo pages) is:
.jtk-drag-select * {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}


start - any numeric expression or field containing a number representing the starting position in
text
numberOfCharacters - any numeric expression or field containing a number representing the number of characters to remove from text
replacementText - any text expression or field containing the text to replace in the original string
Character replacement in text begins at the
start character position and continues for
numberOfCharacters characters. Compare to the
Substitute function.
Replace(PhoneNumber;1;3;”415”) returns
415-555-9054, when the PhoneNumber field contains<PHONE_NUMBER>.


SMCallStates Constants Reference
| Declared in | SMCallTypes.h |
|---|---|
| Availability | 2.0.0 |
SMCallStates
Definition
typedef NS_ENUM(NSInteger, SMCallStates ) {
CALLSTATES_INITIAL = 1,
CALLSTATES_IN_CALL = 3,
CALLSTATES_RINGING = 7,
CALLSTATES_ON_HOLD = 8,
CALLSTATES_REMOTELY_HELD = 9,
CALLSTATES_JOINING = 10,
CALLSTATES_ENDED = 11,
CALLSTATES_DIALING = 12,
CALLSTATES_ANSWERING = 13,
CALLSTATES_UNKNOWN = 19,
CALLSTATES_ON_DOUBLE_HOLD = 20,
CALLSTATES_SESSION_PROGRESS = 21,
};
Constants
CALLSTATES_INITIAL
-
Call object is initialized
Declared In
SMCallTypes.h
. CALLSTATES_IN_CALL
-
Call is active.
Declared In
SMCallTypes.h
. CALLSTATES_RINGING
-
Outgoing call is ringing
Declared In
SMCallTypes.h
. CALLSTATES_ON_HOLD
-
Call is held
Declared In
SMCallTypes.h
. CALLSTATES_REMOTELY_HELD
-
Remote side is on hold
Declared In
SMCallTypes.h
. CALLSTATES_JOINING
-
ThreeWay Call is merging the other calls
Declared In
SMCallTypes.h
. CALLSTATES_ENDED
-
Call is ended completely
Declared In
SMCallTypes.h
. CALLSTATES_DIALING
-
Originator is dialing a number
Declared In
SMCallTypes.h
. CALLSTATES_ANSWERING
-
Ringing call is answering
Declared In
SMCallTypes.h
. CALLSTATES_UNKNOWN
-
Unknown
Declared In
SMCallTypes.h
. CALLSTATES_ON_DOUBLE_HOLD
-
Call is held and remote side is on hold simultaneously
Declared In
SMCallTypes.h
. CALLSTATES_SESSION_PROGRESS
-
183 event came
Declared In
SMCallTypes.h
.
Availability
2.0.0
Declared In
SMCallTypes.h


Always show the expand button
This is some text that should be truncated, but the "whole" content may not be available without another request. So the "Even more" button when expanded can be used.
See more
Even more
Some more details.
Some placeholder text.


ESP FS WebServer - LED Switcher Toggle built-in LED ESP current time, sync with NTP server and sent to this client via WebSocket!


Please call or complete the form below and someone will be in touch with you shortly
Call the 24-HOUR Hostline


This Privacy Policy governs the manner in which EETech Media collects, uses, maintains and discloses information collected from users (each, a "User") of the https://www.allaboutcircuits.com website ("Site").
Personal identification information
As the Data Controller for our Users’ data, we may collect personal identification information from Users in a variety of ways, including, but not limited to, when Users visit our site, register on the site, fill out a form, respond to a survey, and in connection with other activities, services, features or resources we make available on our Site. Users may be asked for, as appropriate, name, email address, phone number. The collected information is not used for any additional purposes, such as to profile those who access our website. We do not make automated decisions based on the data any User provides.
Users may visit our Site anonymously. Users can always refuse to supply personally identification information, except that it may prevent them from engaging in certain Site-related activities.
Non-personal identification information
We may collect non-personal identification information about Users whenever they interact with our Site. Non-personal identification information may include the browser name, the type of computer and technical information about Users means of connection to our Site, such as the operating system and the Internet service providers utilized and other similar information.
Web browser cookies
Our Site may use "cookies" to enhance User experience. User's web browser places cookies on their hard drive for record-keeping purposes and sometimes to track information about them. User may choose to set their web browser to refuse cookies, or to alert you when cookies are being sent. If they do so, note that some parts of the Site may not function properly. We use Facebook Pixel, Linkedin Pixel, and Google Analytics to gather and re-target to our audience.
How we use collected information
EETech Media may collect and use Users personal information for the following purposes:
-
To run and operate our Site
We may need your information display content on the Site correctly. -
To improve customer service
Information you provide helps us respond to your customer service requests and support needs more efficiently. -
To personalize user experience
We may use information in the aggregate to understand how our Users as a group use the services and resources provided on our Site. -
To improve our Site
We may use feedback you provide to improve our products and services. -
To run a promotion, contest, survey or other Site feature
To send Users information they agreed to receive about topics we think will be of interest to them. -
To send periodic emails
We may use the email address to respond to their inquiries, questions, and/or other requests.
Your Data Rights
Under the GDPR (General Data Protection Regulation) policies with which we comply, EU Users have eight data rights as follows:
- The right to be informed: We will be transparent about how we use your data.
- The right of access: Users will know exactly how we process their data, as well as what data about them is currently being stored.
- The right of rectification: Users can have data rectified if it is incorrect or incomplete.
- The right to erasure: Users may have their data deleted if they so choose. This is also known as the “right to be forgotten.”
- The right to restrict processing: Users may restrict or completely block the processing of their personal data.
- The right to data portability: Users may reuse their personal data for individual use.
- The right to object: In some instances, Users may object to the use of their personal data.
- The rights of automated decision making and profiling: Users may object to their use of their data as it relates to automatic processing without human intervention and consequences that have legal bearing on the User.
Your Choices
Access, Correction, Deletion.
We respect your privacy rights and provide you with reasonable access to the personal data that you may have provided through your use of the Site. If you wish to access or amend any personal data we hold about you, or to request that we delete any information about you, you may contact us as set forth in the “Contacting Us” section. At your request, we will have any reference to you deleted or blocked in our database.
You may decline to share certain personal data with us, or choose to request the restriction or suppression of your personal data, in which case we may not be able to provide to you some of the features and functionality of the Site.
At any time, you may object to the processing of your personal data, on legitimate grounds, except if otherwise permitted by applicable law.
How we protect your information
We adopt appropriate data collection, storage and processing practices and security measures to protect against unauthorized access, alteration, disclosure or destruction of your personal information, username, password, transaction information and data stored on our Site.
Sharing your personal information
We may use third party service providers to help us operate our business and the Site or administer activities on our behalf, such as sending out newsletters or surveys. We may share your information with these third parties for those limited purposes provided that you have not opted-out of these services.
Law Enforcement and Legal Process
We may report to law enforcement agencies any activities that we believe to be unlawful. We may also report any activities that we believe may aid a law enforcement investigation into unlawful activity. We also reserve the right to access, read, preserve, and disclose any information as we reasonably believe is necessary, in our sole judgement, to (i) satisfy any applicable law, regulation, legal process or governmental request, (ii) enforce this Privacy Policy and our Terms of Service, including investigation of potential violations hereof, (iii) detect, prevent, or otherwise address fraud, security or technical issues, (iv) respond to user support requests, or (v) protect the rights, property or safety, of the Site, the public, or another user. This includes exchanging information with other companies and organizations for fraud protection and spam/malware prevention.
Advertising
Ads appearing on our site may be delivered to Users by advertising partners, who may set cookies. This privacy policy does not cover the use of cookies by any advertisers.
Compliance with children's online privacy protection act
Protecting the privacy of the very young is especially important. For that reason, we never collect or maintain information at our Site from those we actually know are under 13, and no part of our website is structured to attract anyone under 13.
Sharing Your Information as Permitted By Law
We may share your information with others as required by law. We may also share your information with others as permitted by law. This may include sharing your information with government entities or third-parties in response to subpoenas, court orders, other legal process. We may also share your information if we believe it is necessary to exercise our legal rights, to defend against legal claims that have been brought against us, or to defend against possible legal claims that we determine might be brought against us.
Electronic newsletters
If a user has opted-in, they will receive emails that may include company news, updates, related product or service information, advertisements, etc. The User gives explicit consent to receive the Site’s newsletters by filling out the Site’s registration form, which includes registration for AllAboutCircuits.com, its forum, and newsletters, as clearly stated on the registration page. If at any time the User would like to unsubscribe from receiving future emails, we include the unsubscribe link at the bottom of each email. We may share your contact information with our advertisers if you have shown an interest in their products/services (by clicking on their advertisement in our newsletters and consenting to receive their updates).
Giveaways, Design Contests, Webinars & Industry White Papers
By registering and checking the opt-in checkbox for a Giveaway, Design Contest, Webinar or an Industry white paper, the User acknowledges that their contact information will be shared with the sponsoring company, as stated on the respective registration page.
Surveys
Occasionally, we conduct user surveys to better understand the needs of our audience in order to improve our features. We sometimes share the aggregated demographic information in these surveys with our advertisers and partners. We never share any survey information about specific individuals with any third party without the user’s consent. By filling out surveys on our media properties, or social networks (e.g., Facebook), the user acknowledges that their contact information may be shared with companies that they mark having an interest in and consent receiving communication from.
Third party websites
Users may find advertising or other content on our Site that link to the sites and services of our partners, suppliers, advertisers, sponsors, licensors and other third parties. We do not control the content or links that appear on these sites and are not responsible for the practices employed by websites linked to or from our Site. In addition, these sites or services, including their content and links, may be constantly changing. These sites and services may have their own privacy policies and customer service policies. Browsing and interaction on any other website, including websites which have a link to our Site, is subject to that website's own terms and policies.
International transfer of data
If you are visiting this Site from outside the United States, please note that any personal data you agree to submit will be transferred to and housed in our U.S. servers. That data may then be transferred within the United States or transferred to other countries outside of the United States, where stringent data protection laws may not be in place. However, our collection, storage, and use of this data will continue to be governed by this privacy policy.
Any data transferred from the EEA to the United States through our Site is compliant with the EU-US Privacy Shield.
Changes to this privacy policy
EETech Media has the discretion to update this privacy policy at any time. We encourage Users to frequently check this page for any changes to stay informed about how we are helping to protect the personal information we collect. You acknowledge and agree that it is your responsibility to review this privacy policy periodically and become aware of modifications.
Your acceptance of these terms
By using this Site, you signify your acceptance of this policy. If you do not agree to this policy, please do not use our Site. Your continued use of the Site following the posting of changes to this policy will be deemed your acceptance of those changes.
Contacting us
If you have any questions about this Privacy Policy, the practices of this Site, or your dealings with this Site, please contact our Data Protection Officer. They can be reached by email at<EMAIL_ADDRESS>or at the following address:
EETech Media, LLC
ATTN: Data Protection Officer
404 S. 8th St., Ste. 203
Boise, ID 83702
This document was last updated on May 24, 2018


Hong Kong vote hits record amid calls for democracy
HONG KONG (Reuters) - A record number of Hong Kong people voted on Sunday in district elections viewed as a barometer of support for city leader Carrie Lam, who has been besieged by nearly six months of often violent anti-government protests.
Government data showed 1,524,675 people had cast their vote by 1.30 p.m., with nine hours still left until polling stations closed. That surpassed the 1,467,229 voters in the last district elections four years ago.


| mut_node_car {rlang} | R Documentation |
These functions were deprecated and renamed with node_poke_
prefix in rlang 0.2.0. This change follows a new naming convention
where mutation is referred to as "poking".
mut_node_car(x, newcar) mut_node_cdr(x, newcdr) mut_node_caar(x, newcar) mut_node_cadr(x, newcar) mut_node_cdar(x, newcdr) mut_node_cddr(x, newcdr) mut_node_tag(x, newtag)
x |
A language or pairlist node. Note that these functions are barebones and do not perform any type checking. |
newcar |
The new CAR or CDR for the node. These can be any R objects. |
newcdr |
The new CAR or CDR for the node. These can be any R objects. |
newtag |
The new tag for the node. This should be a symbol. |


A similar API for decimal.js and JS native numbers. There's a substantial speed difference between the two.


--- title: "Music Encoding Conference 2020 - Tufts University" permalink: "/conference/2020/index-old.html" tag: MEC2020 id: about published: false ---
The Music Encoding Conference is the annual meeting of the Music Encoding Initiative (MEI) community and all who are interested in the digital representation of music.
Music encoding is a critical component for fields and areas of study including computational or digital musicology, digital editions, symbolic music information retrieval, and digital libraries. This event brings together enthusiasts from various music research communities, including technologists, librarians, music scholars, and students and provides an opportunity for learning and engaging with and from each other.
The conference is hosted by Tisch Library and Lilly Music Library of Tufts University on the Medford, MA campus. It is co-sponsored with the Department of Music at Tufts, Digital Scholarship Group at Northeastern University Library, and MIT Digital Humanities.
All attendees are expected to adhere to the conference Code of Conduct.
Travel & Accommodation Information
Questions? Contact Organizing Committee Chair, Anna Kijas at anna.kijas at tufts.edu or Program Committee Chair, Richard Freedman at rfreedma at haverford.edu.